获取值从文本框中用逗号分隔并存储为数组JAVA

时间:2012-12-11 03:47:53

标签: java arrays input

我不确定如何说出来,但基本上我想用xxx, xxx, xxx格式的rgb颜色读取并将每个xxx存储在一个数组中。我正在制作一个程序将rgb转换为十六进制。直到我创建了我的gui(可能需要一些时间),我正在终端执行并输入。

目前我正在做的事情:

System.out.println("Enter the first set:");
rgb[0] = new Scanner(System.in).nextInt();`
System.out.println("Enter the second set:");
rgb[1] = new Scanner(System.in).nextInt();
System.out.println("Enter the third set:");
rgb[2] = new Scanner(System.in).nextInt(); 
  • 我见过人们使用.split(","),这是做我想要的最好方法吗?
  • 正则表达式会更好用吗?
  • 任何人都知道我可以使用的任何教程吗?我发现的大部分都让我比以前更加困惑。

只是因为你知道我没有为一个项目做这件事(在任何人指责我之前)。我已经有了算法,除此之外其他一切都有效。

3 个答案:

答案 0 :(得分:5)

以下是我的建议:

  • 每次要读取输入时,都不要创建新的Scanner实例。只需在程序开头创建一个并在整个过程中重复使用它。

  • split方法将正则表达式作为其参数,并返回String[](在其参数的每个匹配项上拆分字符串)。因此,如果您计划解析"xxx, xxx, xxx"形式的字符串,那么.split(",\\s*")可能是您最好的选择。 \s匹配任何空白字符,\s*匹配\s零次或多次。

  • 我假设rgbint[],因此您可以遍历从String[]获得的split(如上所述),每个元素都Integer.parseInt,并将解析后的int添加到rgb


相关文档

答案 1 :(得分:2)

我建议使用split()方法,它会返回一个数组。

此外,您的代码看起来多余。 我建议使用某种循环

答案 2 :(得分:1)

是的,拆分是一种选择......

String[] strArray = inputString.split(",");
int[] rgb = new int[strArray.length]
for (int i=0; i<strArray.length; ++i) {
    rgb[i] = Integer.parseInt(strArray[i].trim());
}

扫描仪也能正常工作......

Scanner sc = new Scanner(inputString);
String match;
while ((match = sc.findInLine("(\\d+)"))!=null) {
    // here i print it, but you need to put it into an array (like above),
    // i'll leave it to you as an exercise
    System.out.println(Integer.parseInt(match));
}    
sc.close();