C#中字符串数组转整数数组遇阻,求有效转换方案
问题分析
你现在遇到的核心问题是字符串转整数的语法错误,以及后续排序时传参类型不匹配的问题。先看你尝试的转换代码:
numb[i] = path[i].Convert.toInt32();
这是语法错误,因为Convert是C#的静态类,不是string类型的成员方法,不能通过字符串实例去调用它。
解决方案
1. 正确完成字符串到整数的转换
你可以在读取后的循环里完成转换,替换掉原来的Console.WriteLine(path[i]);,推荐两种方法:
方法一:直接转换(适合确定文件里全是有效整数的情况)
string[] path = File.ReadLines("C:\\Users\\M\\numb.txt").ToArray(); int[] numb = new int[path.Length]; for (int i = 0; i < path.Length; i++) { // 正确的转换写法:调用静态类Convert的方法,或者用int.Parse numb[i] = Convert.ToInt32(path[i]); // 或者 numb[i] = int.Parse(path[i]); Console.WriteLine(numb[i]); // 可以输出转换后的整数验证 }
方法二:安全转换(防止文件里有非数字内容抛出异常)
如果不确定文件里的内容是否全是合法整数,用int.TryParse更稳妥,它会返回转换是否成功的布尔值:
string[] path = File.ReadLines("C:\\Users\\M\\numb.txt").ToArray(); List<int> numbList = new List<int>(); for (int i = 0; i < path.Length; i++) { if (int.TryParse(path[i], out int num)) { numbList.Add(num); Console.WriteLine(num); } else { Console.WriteLine($"第{i+1}行内容「{path[i]}」不是有效整数,已跳过"); } } int[] numb = numbList.ToArray();
2. 修正排序方法的传参问题
你的冒泡排序方法应该是接收int[]类型的参数,所以在switch语句里要传入转换后的numb数组,而不是原来的path字符串数组:
switch (a) { case 1: Console.WriteLine("1. Bubble."); babel(numb); // 传入int数组numb,而不是path for (int z = 0; z < numb.Length; z++) { Console.Write(numb[z] + ", "); // 输出排序后的整数数组 } break; // 其他case同理 }
这样就能完成字符串数组到整数数组的转换,并且正常调用排序方法啦!
内容的提问来源于stack exchange,提问作者pisul
相关产品推荐
相关产品推荐

