我不确定如何说出来,但基本上我想用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(",")
,这是做我想要的最好方法吗?只是因为你知道我没有为一个项目做这件事(在任何人指责我之前)。我已经有了算法,除此之外其他一切都有效。
答案 0 :(得分:5)
以下是我的建议:
每次要读取输入时,都不要创建新的Scanner
实例。只需在程序开头创建一个并在整个过程中重复使用它。
split
方法将正则表达式作为其参数,并返回String[]
(在其参数的每个匹配项上拆分字符串)。因此,如果您计划解析"xxx, xxx, xxx"
形式的字符串,那么.split(",\\s*")
可能是您最好的选择。 \s
匹配任何空白字符,\s*
匹配\s
零次或多次。
我假设rgb
是int[]
,因此您可以遍历从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();