【问题标题】:how to ask user input numbers in array in textbox1 and display in textbox2如何在textbox1中询问用户输入数组中的数字并在textbox2中显示
【发布时间】:2018-03-29 23:03:17
【问题描述】:

我有两个文本框,textbox1 将有用户输入的数字,如果用户输入的数字超过 4,则会发生异常处理 indexoutofrange。但是,我收到一条错误消息:

无法从 'string[]' 转换为字符串。

如何解决错误以及如何输入数组编号?

int[] answer =int.Parse(textBox3.Text.Split(new Char[] { ',' }));

for (int i = 0; i < 4; i++)
{
    answer[i] = int.Parse(jawapanD17193.Text);
}

【问题讨论】:

  • @MongZhu,这是您提供的链接的副本吗? op 面临着不同的问题,对吧?
  • @zackraiyan 我第一次读它时不够仔细。然后撤回了我的近距离投票,但评论没有自动删除。现在一切都归零了
  • @MongZhu ,没关系...我希望 OP 发现您的解决方案有帮助... :)
  • "如何输入数组编号?"你到底是什么意思?
  • @MongZhu 我的意思是我想输入像 1,2,3,4 这样的数字列表。然后是数字数组数字。我不知道怎么解释。我的意思是 int 答案 = {1,2,3,4};

标签: c# indexoutofrangeexception


【解决方案1】:

问题:Int.Parse 方法需要 string 作为输入。而string.Split 返回一个string []

解决方案:您需要反转转换:

int[] answer = textBox3.Text.Split(new Char[] { ',' }).Select(x=> int.Parse(x)).ToArray();

这样一来,您将解析string [] 中的每个元素,最后您将拥有一个int 数组。

您不需要声明额外的 char 数组:new Char[] { ',' }。如果您阅读文档,您会看到 Split 需要一个

params char[] 分隔符

作为参数。所以逐个字符地处理它就可以了:

int[] answer = textBox3.Text.Split(',').Select(x=> int.Parse(x)).ToArray();

编辑:

有时,空格会扰乱转换。你可以使用Trim()删除它

    int[] answer = textBox3.Text.Split(',').Select(x=> int.Parse(x.Trim())).ToArray();

【讨论】:

  • 我收到错误消息说“输入字符串的格式不正确”。我输入了数字,例如:1,2,2,1
  • @nikina 可能是你那里有空间。我编辑了我的帖子以展示如何摆脱它。看看
  • @nikina 那么你应该尝试可以指定stringsplitoptions的split重载
【解决方案2】:

int.Parse 需要一个 string 作为输入,但您将 string.Split 的结果传递给它,这是一个 string[]

使用循环或 LINQ Select 将每个单独的字符串从数组传递到 int.Parse

using System.Linq;

int[] answers = textBox3.Text
    .Split(new Char[] { ',' })
    .Select(str => int.Parse(str))
    .ToArray();

【讨论】:

  • 看起来蒙珠比你快50秒:)
  • 是的。我们想出了相同的解决方案:)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-02-20
  • 2022-11-04
  • 1970-01-01
  • 1970-01-01
  • 2015-12-24
相关资源
最近更新 更多