1

我不太确定如何表达,但基本上我想以 rgb 颜色xxx, xxx, xxx格式读取并将每个颜色存储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(","),这是做我想做的最好的方法吗?
  • 正则表达式会更好吗?
  • 有人知道我可以使用的任何教程吗?我发现的大多数问题都让我比现在更加困惑。

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

4

3 回答 3

5

以下是我的建议:

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

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

  • 我假设rgb是一个int[],所以你可以遍历String[]split(如上所述)获得的你,调用Integer.parseInt每个元素,并将解析的 int 添加到rgb.


相关文件

于 2012-12-11T03:52:14.483 回答
2

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

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

于 2012-12-11T03:52:45.330 回答
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();
于 2012-12-11T03:55:55.297 回答