Ошибка int32 как исправить

У меня, когда программа скомпилирована (программа для консоли), выдает в консоли System.Int32[]. При любом коде выбивает это значение, на других компьютерах программа работает нормально.

В чем проблема?

Программирую на С#.

Обновление

static void Main(string[] args)
{

    string s = "Сегодня мы с вами рассмотрели, как работать со строками в Си-шарп. Были описаны основные операторы и методы, которые используются для работы со строками";

    string res = s.Substring(s.IndexOf("Были"), Convert.ToInt32( s.IndexOf(", которые") - s.IndexOf("Были")));
    Console.WriteLine(res);
    Console.ReadKey();
}

LEQADA's user avatar

LEQADA

5,1753 золотых знака23 серебряных знака48 бронзовых знаков

задан 14 ноя 2014 в 18:25

Renneur's user avatar

6

Честно говоря, не вижу проблем в вашем коде — у меня он также работает корректно. Если у вас действительно есть какие-то проблемы с кодом, то могу лишь предположить, что причиной тому могут быть локальные языковые настройки. Попробуйте заменить третью строку вашего кода на следующую:

string res = s.Substring(s.IndexOf("Были", StringComparison.Ordinal), Convert.ToInt32(s.IndexOf(", которые", StringComparison.Ordinal) - s.IndexOf("Были", StringComparison.Ordinal)));

ответ дан 14 ноя 2014 в 18:51

DreamChild's user avatar

DreamChildDreamChild

36k2 золотых знака44 серебряных знака85 бронзовых знаков

3

Fardar

0 / 0 / 0

Регистрация: 10.01.2019

Сообщений: 28

1

30.01.2019, 17:47. Показов 30675. Ответов 4

Метки нет (Все метки)


Студворк — интернет-сервис помощи студентам

Всем привет.
Прошу помочь тех, кто уже встречался с такой проблемой и/или знает, что делать.
Проблема в том, что VS не подсвечивает ошибки, но в консоль выводится System.Int32[]
Пролез весь интернет. Подобные темы есть, но все же не то, поскольку там другая ситуация и проблема очевидна.
А тут я проблем не вижу.
Результатом должен быть массив.

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
class Program
    {
        static void Main(string[] args)
        {
            int[] Revers(int[] numbers)
            {
                int[] rotate = new int[numbers.Length];
                for (int i = numbers.Length - 1; i >= 0; i--)
                {
                    int j = 0;
                    j++;
                    rotate[j] = numbers[i];
                }
                return rotate;
            }
            int[] array = new int[] { 6, 7, 4, 3, 8, 0 };
            int[] arr;
            arr = Revers(array);
            Console.WriteLine(array);
        }
    }



0



Someone007

Эксперт .NET

6315 / 3934 / 1577

Регистрация: 09.05.2015

Сообщений: 9,237

30.01.2019, 17:49

2

Лучший ответ Сообщение было отмечено Fardar как решение

Решение

Массив не так выводится.

Добавлено через 33 секунды

C#
1
Console.WriteLine(string.Join("," array));



2



0 / 0 / 0

Регистрация: 10.01.2019

Сообщений: 28

30.01.2019, 18:16

 [ТС]

3

Большое спасибо!
Если не сложно, мог бы ты мне подсказать, какая проблема в коде?
Писал функцию для вывода массива задом наперед, сейчас вот запустился благодаря тебе, но функция не отработала.



0



Someone007

Эксперт .NET

6315 / 3934 / 1577

Регистрация: 09.05.2015

Сообщений: 9,237

30.01.2019, 18:31

4

У вас выводится оригинальный массив.

C#
1
2
3
4
int[] array = new int[] { 6, 7, 4, 3, 8, 0 };
Console.WriteLine(string.Join("," array));
int[] arr = Revers(array);
Console.WriteLine(string.Join("," arr));



1



Fardar

0 / 0 / 0

Регистрация: 10.01.2019

Сообщений: 28

30.01.2019, 18:49

 [ТС]

5

Да, это я уже заменил. Там все равно неверно получается. Но я уже решил эту проблему. Поменял немного функцию таким образом: перенес j и инкремент в условие цикла

C#
1
2
3
4
5
6
7
8
9
10
11
int[] Revers(int[] numbers)
            {
                int[] rotate = new int[numbers.Length];
                for (int i = numbers.Length - 1, j = 0; i >= 0; i--, j++)
                {
                    
                    
                    rotate[j] = numbers[i];
                }
                return rotate;
            }



0



IT_Exp

Эксперт

87844 / 49110 / 22898

Регистрация: 17.06.2006

Сообщений: 92,604

30.01.2019, 18:49

5

Корпорация Майкрософт распространяет исправления Microsoft SQL Server 2008 R2 как один файл для загрузки. Поскольку исправления являются кумулятивными, каждый новый выпуск содержит все исправления и исправления для системы безопасности, которые были включены в предыдущий выпуск исправлений для SQL Server 2008 R2.

Проблемы

Рассмотрим следующий сценарий.

  • У вас есть файл языка определения отчетов (RDL), содержащий элемент управления табликса в службах Microsoft SQL Server 2008 R2 Reporting Services.

  • Вы добавляете в элемент управления табликса группу строк или столбцов, а затем устанавливаете выражение группы для данных группы, используя столбец с числовым типом данных.

  • Этот столбец содержит значение, которое не входит в диапазон типа данных Int32 . Например, значение столбца — 9000001777400270.

В этом случае при попытке создать отчет появляется следующее сообщение об ошибке:

При локальной обработке отчета произошла ошибка. Произошла ошибка при обработке отчета. Значение было недопустимо малым или недопустимо большим для Int32.

Решение

Сведения о накопительном пакете обновления

SQL Server 2008 R2

Исправление для этой проблемы впервые выпущено в накопительном обновлении 4. Для получения дополнительных сведений о том, как получить этот накопительный пакет обновления для SQL Server 2008 R2, щелкните следующий номер статьи базы знаний Майкрософт:

2345451 Накопительный пакет обновления 4 для SQL Server 2008 R2 Примечание. Поскольку сборки являются кумулятивными, каждый новый выпуск исправлений содержит все исправления и все исправления безопасности, которые были включены в предыдущий выпуск исправлений для SQL Server 2008 R2. Рекомендуется установить последнюю версию исправления, которая включает это исправление. Дополнительные сведения см. в следующей статье базы знаний Майкрософт:

981356 Сборки SQL Server 2008 R2, выпущенные после выпуска SQL Server 2008 R2

Обходное решение

Для решения этой проблемы преобразуйте числовой тип данных в тип данных Double или Int64 . Для этого выполните следующие действия:

  1. Дважды щелкните группу в области группы строк или группы столбцов , чтобы открыть свойства группы .

  2. На вкладке Общие измените выражение Group на следующее выражение типа данных System. Double :

    CDbl (Fields!<имя поля>. ЗначениеВы также можете изменить выражение группы на следующий тип данных System. Int64 :

    CLng (Fields!<имя поля>. Значение

Статус

Корпорация Майкрософт подтверждает наличие этой проблемы в своих продуктах, которые перечислены в разделе «Применяется к».

Ссылки

Для получения дополнительных сведений о типах данных посетите следующие веб-сайты:

Общие сведения о структуре «Decimal»

Общие сведения о структуре «Int32»

Общие сведения о структуре «Int64»

Общие сведения о структуре «double»

Нужна дополнительная помощь?

Нужны дополнительные параметры?

Изучите преимущества подписки, просмотрите учебные курсы, узнайте, как защитить свое устройство и т. д.

В сообществах можно задавать вопросы и отвечать на них, отправлять отзывы и консультироваться с экспертами разных профилей.

  • Remove From My Forums
  • Question

  • User-1640542475 posted

    Hi

    I have an error ‘System.Int32’ type to the ‘System.String’ type is not valid in mvc api .

    Pls advice me

    Thank you
    Maideen

    It is my code

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Web;
    
    namespace advEditorials.Models
    {
        public class MoDetails
        {
            public int Id { get; set; }
            public string DocNo { get; set; }
            public DateTime PubDate { get; set; }
            public string MainSection { get; set; }
            public string SubSection { get; set; }
            public string Position { get; set; }
            public string Color { get; set; }
            public decimal SizeH { get; set; }
            public decimal SizeW { get; set; }
            public decimal Volume { get; set; }
            public decimal PageNumber { get; set; }
            public string Materials { get; set; }
            public string Remarks { get; set; }
            public string Status { get; set; }
    
        }
    }
    
    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Threading.Tasks;
    using System.Web;
    
    namespace advEditorials.Models
    {
        public interface IMORepository
        {
            Task Add(MoDetails mo);
            Task Update(MoDetails mo);
            Task Delete(string id);
            Task<MoDetails> Getmo(string id);
            Task<IEnumerable<MoDetails>> GetmoALL();
        }
    }
    using System;
    using System.Collections.Generic;
    using System.Data.Entity;
    using System.Linq;
    using System.Threading.Tasks;
    using System.Web;
    
    namespace advEditorials.Models
    {
        public class MORepository :IMORepository
        {
            private readonly SqlDbContext db = new SqlDbContext();
    
    // Retrive All
            public async Task<IEnumerable<MoDetails>> GetmoALL()
            {
                try
                {
                    var mo = await db.tbl_Editorial.ToListAsync();
                    return mo.AsQueryable();
                }
                catch
                {
                    throw;
                }
            }
    
     // by ID
            public async Task<MoDetails> Getmo(string id)
            {
                try
                {
                    MoDetails mo = await db.tbl_Editorial.FindAsync(id);
                    if (mo == null)
                    {
                        return null;
                    }
                    return mo;
                }
                catch
                {
                    throw;
                }
            }
     //Add
            public async Task Add(MoDetails mo)
            {
                mo.Id = Guid.NewGuid().ToString();
                
                db.tbl_Editorial.Add(mo);
                try
                {
                    await db.SaveChangesAsync();
                }
                catch
                {
                    throw;
                }
            }
    
            //Update
            public async Task Update(MoDetails mo)
            {
                try
                {
                    db.Entry(mo).State = EntityState.Modified;
                    await db.SaveChangesAsync();
                }
                catch
                {
                    throw;
                }
            }
    //Delete
            public async Task Delete(string id)
            {
                try
                {
                    MoDetails mo = await db.tbl_Editorial.FindAsync(id);
                    db.tbl_Editorial.Remove(mo);
                    await db.SaveChangesAsync();
                }
                catch
                {
                    throw;
                }
            }
    
            private bool MOExists(string id)
            {
                return db.tbl_Editorial.Count(e => e.Id == id) > 0;
            }
        }
    } 
    
    Controller
    
    using advEditorials.Models;
    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Net;
    using System.Net.Http;
    using System.Threading.Tasks;
    using System.Web.Http;
    
    namespace advEditorials.Controllers
    {
        public class EditorialController : ApiController
        {
            private readonly IMORepository _iMORepository = new MORepository();
    
            [HttpGet]
            //[Route("api/Editorial/Get")]
            public async Task<IEnumerable<MoDetails>> Get()
            {
                return await _iMORepository.GetmoALL();
            }
    
            [HttpPost]
            [Route("api/Editorial/Create")]
            public async Task CreateAsync([FromBody]MoDetails mo)
            {
                if (ModelState.IsValid)
                {
                    await _iMORepository.Add(mo);
                }
            }
    
            [HttpGet]
            [Route("api/Editorial/Details/{id}")]
            public async Task<MoDetails> Details(string id)
            {
                var result = await _iMORepository.Getmo(id);
                return result;
            }
    
            [HttpPut]
            [Route("api/Editorial/Edit")]
            public async Task EditAsync([FromBody]MoDetails mo)
            {
                if (ModelState.IsValid)
                {
                    await _iMORepository.Update(mo);
                }
            }
    
            [HttpDelete]
            [Route("api/Editorial/Delete/{id}")]
            public async Task DeleteConfirmedAsync(string id)
            {
                await _iMORepository.Delete(id);
            }
        }
    }
    db Table
    
    CREATE TABLE [dbo].[tbl_Editorial](
    	[id] [nvarchar](20) NOT NULL,
    	[DocNo] [varchar](20) NULL,
    	[pubdate] [date] NULL,
    	[MainSection] [varchar](50) NULL,
    	[SubSection] [varchar](50) NULL,
    	[Position] [varchar](50) NULL,
    	[Color] [varchar](20) NULL,
    	[SizeH] [float] NULL,
    	[SizeW] [float] NULL,
    	[Volume] [float] NULL,
    	[PageNumber] [float] NULL,
    	[Materials] [varchar](100) NULL,
    	[Remarks] [varchar](100) NULL,
    	[Status] [varchar](20) NULL,
    	[Category] [varchar](50) NULL
    ) ON [PRIMARY]
    GO
    
    
    

Answers

  • User61956409 posted

    Hi maideen5,

    Operator ‘==’ cannot be applied to operands of type ‘int’ and ‘string’

    private bool MOExists(string id)
    {
    return db.tbl_Editorial.Count(e => e.Id == id) > 0;  (this line)

    }

    Please go definition of your tbl_Editorial class and check if the
    Id property look like this.

    [StringLength(20)]
    public string Id { get; set; }

    With Regards,

    Fei Han

    • Marked as answer by

      Thursday, October 7, 2021 12:00 AM

  • Remove From My Forums
  • Question

  • Hi.

    Please someone help with this error:

    cannot perform ‘>=’ operation on system.int32 and system.string

    This is the error which always give me when executing this one when comparing prices between two values like, i > 5 && i < 10:

    dataGrid6.DefaultView.RowFilter = «Price >= » + textBox6.Text + «‘ And Price <= » + textBox7.Text + «‘»;

    The interesting thing is when i load excel file in datagridview and try executing this one works, but when i scrape data from website and than executing this one in the other gridview for new scraped data this error shows. please help. 

    just this query not work i’ve tried to executre other with LIKE works well.

    tnx

    • Edited by

      Sunday, May 18, 2014 4:12 AM
      Found solution for my prev question, but now i have new one

Answers

  • Unfortunately, that’s not going to work correctly for you in all circumstances. Since you’re now comparing strings instead of actual numeric data, you won’t get valid comparisons (for example, 10 will be less than 2, because as a string, «1» is less than
    «2» and «10» will also be less than «2»).

    You really need to have that DataColumn be a double in your DataTable. You didn’t answer my question as to how you’re getting the data into that DataTable.


    ~~Bonnie DeWitt [C# MVP]

    http://geek-goddess-bonnie.blogspot.com

    • Marked as answer by
      Caillen
      Sunday, May 25, 2014 12:25 AM

  • Hello,

    There is ‘things’ that happen under the covers when reading sheet data via OleDb that you are by default not in control of but there are literally countless ways to circumvent the default behavior from altering setting in the system registry to how you load
    data. No matter which method you use there are good and bad things to contend with.

    Let’s say a column has integers and doubles, when loading them into a DataTable via OleDb connection and command I would suspect if you interrogate the data type of each column with no formatting these numbers will show as Double. Now let’s say
    that if we want integer type and you are confident each value in the cells for that column in the range you are reading from may be represented as an integer and you know the column names we can generate Data Column for each column prior to
    reading the data.  

    In the example below the connection string has been setup so that the first row contains data thus each column name is Fx were x is the ordinal index of the column in the range read. Alias column Number3 is a Double but here we setup the DataColumn as integer
    (see comments in the example)

    DataTable dt = new DataTable { TableName = "ExcelData" };
    dt.Columns.Add(new DataColumn { ColumnName = "Identifier", 
                                    DataType = typeof(Int32), 
                                    AutoIncrement = true, 
                                    AutoIncrementSeed = 1 });
    dt.Columns.Add(new DataColumn { ColumnName = "ServerName", DataType = typeof(string) });
    dt.Columns.Add(new DataColumn { ColumnName = "FirstName", DataType = typeof(string) });
    dt.Columns.Add(new DataColumn { ColumnName = "Numbers1", DataType = typeof(double) });
    dt.Columns.Add(new DataColumn { ColumnName = "Numbers2", DataType = typeof(double) });
    /*
     * For the demo this column is determined to be Double when loading the data if we did
     * not define the columns above so in this case I know that the two columns above
     * and the one below are indeed Double I can indicate that Number3 column can be set
     * to Integer.
     */
    dt.Columns.Add(new DataColumn { ColumnName = "Numbers3", DataType = typeof(int) });
    
    using (System.Data.OleDb.OleDbConnection cn = new System.Data.OleDb.OleDbConnection())
    {
        cn.ConnectionString = "Your connection string";
    
        using (OleDbCommand cmd = new OleDbCommand { Connection = cn })
        {
            cn.Open();
    
            cmd.CommandText = 
                @"
                SELECT 
                    F1 As ServerName, 
                    F2 As FirstName, 
                    F3 As Numbers1, 
                    F4 As Numbers2, 
                    F5 As Numbers3 
                FROM [Sheet1$] 
                Order By F2";
            dt.Load(cmd.ExecuteReader());
        }
    }
    

    Any ways it is important to know (as Bonnie has inquired) how your data was loaded.


    Please remember to mark the replies as answers if they help and unmark them if they provide no help, this will help others who are looking for solutions to the same or similar problem.

    • Marked as answer by
      Caillen
      Sunday, May 25, 2014 12:26 AM

Понравилась статья? Поделить с друзьями:
  • Как найти отражение в музыке
  • Как найти коэффициент технического использования
  • Как найти адрес пункта выдачи вайлдберриз
  • Как исправить поплывшую татуировку
  • Как найти массовую долю водорода в воде