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

Operator '>=' cannot be applied to operands of type 'string' and 'int'

我是 C# 的新手,一直在寻找有关使用 Int32.Parse、Int32.TryParse、Convert.Int32 等将字符串转换为整数的解决方案。但是我找不到正确的解决方案接近我想要的东西。我在这里找到了类似的 post : Operator '>=' cannot be applied to operands of type 'string' and 'string' ,但仍然找不到正确的解决方案。

下面简要介绍一下我要编写的代码。

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

  2. 的文本文件
  3. 然后打开文本文件"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    

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

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

我在

行发表了评论
if (words1[t] >= 25 && words1[t] <= 50)

我需要帮助的地方。

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();
            }

您的 excel 文件中的值看起来像 double 而不是 int,因此,您可能需要考虑将其解析为 instead of [=12] =]喜欢;

double myDoubleWord = double.Parse(words1[t]);
if (myDoubleWord >= 25 && myDoubleWord <= 50) 

可以使用 >=<= 运算符将双精度与整数进行比较。

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

这是解析数字的好方法。

if (int.TryParse(words1[t], out int num))  
{ 
     //we see test if the string is an number and if it is wi output is as a new int.
     if (num >= 25 && num <= 50) //now we can safely do your int comparison without number
     {
         fidout.WriteLine(words1[t]);
     }
}
else //if however our string wasn't capable of being an int we do something else
Console.WriteLine("couldn't parse string ");