运算符 '>=' 不能应用于类型为 'string' 和 'int' 的操作数

YPC*_*Cor 0 c# arrays string int streamreader

我对 C# 很陌生,一直在寻找有关使用 Int32.Parse、Int32.TryParse、Convert.Int32 等将字符串转换为整数的解决方案。但是我找不到合适的解决方案来接近我想要的。我在这里找到了一个类似的帖子:运算符 '>=' 不能应用于 'string' 和 'string' 类型的操作数,但仍然找不到正确的解决方案。

这是我正在尝试编码的内容的简要说明。

  1. 打开名为“compare.xls”的 Excel 文件,读取文件并写入名为“tline.txt”的文本文件

  2. 然后打开文本文件“tline.txt”,逐行读取文本,只写入带有条件语句的名为“mkmatlab.txt”的文本文件。条件语句:如果从该行读取的数字为 25 <= x <= 50,则将其写入“mkmatlab.txt”(仅当它是整数时才写入文件)。

Excel文件中的内容的一个想法:

A1..|  B1....... |  C1........ | D1........| E1........|      
0.1 |10.2000    |53.6000    |52.7894    |24.9608                                        
0.2 |26.8209    |55.0851    |56.4726    |35.8431                                    
0.3 |10.1009    |56.0314    |56.5013    |27.8922                                    
0.4 |17.7008    |60.0054    |59.7650    |37.8018    
Run Code Online (Sandbox Code Playgroud)

*符号 .. 和 | 只是在这里充当间距,Excel 文件或文本文件不包含任何这些符号。

说明:第一行包含 A1 到 E1。对于列 A1,包含 0.1 到 0.4,对于列 B1 到 E1,依此类推。

我在线上有评论

if (words1[t] >= 25 && words1[t] <= 50)
Run Code Online (Sandbox Code Playgroud)

我需要帮助的地方。

StreamReader fidin = File.OpenText(@"C:\Users\Student\Downloads\compare.xls");
StreamWriter tline = File.CreateText(@"C:\Users\Student\Downloads\tline.txt"); 

string F = fidin.ReadToEnd();
fidin.Close();

string[] words = F.Split(';');
Array.Sort(words);

for (int f = 0; f < words.Length; f++)
     tline.WriteLine(words[f]);
tline.Close();

StreamReader tline1 = File.OpenText(@"C:\Users\Student\Downloads\tline.txt");
StreamWriter fidout = File.CreateText(@"C:\Users\Student\Downloads\mkmatlab.txt");

string T = tline1.ReadToEnd();
            tline1.Close();

            string[] words1 = T.Split(';');
            Array.Sort(words1);

            int counter = 0;
            string line;

            while ((line = tline1.ReadLine()) != null)
            {
                System.Console.WriteLine(line);
                fidout.WriteLine(line);
                counter++;
                Console.ReadKey();
            }

Run Code Online (Sandbox Code Playgroud)

Son*_*nül 5

您的 excel 文件中的值看起来像double而不是int,因此,您可能需要考虑将其解析insteadint类似的两倍;

double myDoubleWord = double.Parse(words1[t]);
if (myDoubleWord >= 25 && myDoubleWord <= 50) 
Run Code Online (Sandbox Code Playgroud)

将 double 与整数进行比较可以使用>=and<=运算符。

还要注意文化差异,因为您的价值观.作为NumberDecimalSeparator,double.Parse使用您的CurrentCulture设置可能适合您的价值观。