我试图找出从0到9读取3个整数但没有空格的最佳方法。最后我将检查输入以确保没有重复或字母,并且已输入3个数字。这是我到目前为止所尝试的。将输入作为字符串读入然后将数字放在整数数组中会更好吗?任何提示将不胜感激。
Scanner guess = new Scanner(System.in);
int[] array = new int[4];
System.out.println("Enter 3 numbers from 0 to 9");
while (guess.hasNextInt()) {
array[i] = guess.nextInt();
i++;
if (i == 3) {
break;
}
}
答案 0 :(得分:1)
你拥有的是好的。我不会使用字符串,我只会使用for循环:
Scanner input = new Scanner(System.in);
int[] arnNums = new int[3];
System.out.println("Enter 3 numbers from 0 to 9");
for(int i = 0; i < 3; i++)
{
arnNums[i] = input.nextInt();
}
答案 1 :(得分:1)
nextInt()
将始终只为您提供输入的整数部分。
答案 2 :(得分:1)
Scanners的nextInt()假设int值将以空格分隔,但您已声明它们将在没有空格的情况下输入(例如“314”)。所以,nextInt()不会做你想做的事。
您可以考虑将输入作为String读取,然后使用String类中的charAt()获取每个数字(并注意您的数组只需要长度为3 ...而不是4):
Scanner guess = new Scanner(System.in);
int[] array = new int[3];
System.out.println("Enter 3 numbers from 0 to 9");
String input = guess.next();
for (int i = 0; i < 3; i++) {
array[i] = input.charAt(i) - '0';
}
答案 3 :(得分:0)
除非我错误地介绍了这个问题,否则听起来好像你想多次阅读[0-9]。
我能想到的最安全/最好的方法是将其扫描为int(因此它解析出极端文本),转换为字符串,解析,然后转换回单独的整数。 e.g。
Scanner guess = new Scanner(System.in);
int[] array = new int[3];
System.out.println("Enter 3 numbers from 0 to 9");
if (guess.hasNextInt()) {
String g = guss.nextInt().toString().;
int max = g.length() > 2 ? 3 : g.length();
for(int i = 0; i < max; i++) {
array[i] = Character.getNumericValue(g.charAt(i));
}
} else {
//bad guess
}
如果您希望该用户将其输入为1 2 3
,则可以将其置于while循环中,直到您的阵列中至少有3个项目为止。
答案 4 :(得分:0)
最终我必须检查输入以确保没有重复或字母,并且已输入3个数字。
尝试,
Scanner guess = new Scanner(System.in);
int[] array = new int[4];
System.out.println("Enter 3 numbers from 0 to 9 , separated by comma (,)");
String input = guess.next();
Set <String> set = new HashSet<String>();
set.addAll(Arrays.asList(input.trim().split(","))); // Move in to a hashset (it does not accept duplicate values)
if(set.size()<3){
System.out.println("Duplicate Data FounD");
}else{
System.out.println("Data entered in a corect manner");
System.out.println("The final array ::");
int i= 0;
for(String str :set){
array[i] = Integer.parseInt(str.trim());
System.out.println(array[i]);
i++;
}
}
输出: 案例1:
Enter 3 numbers from 0 to 9 , separated by comma (,)
12,23,12
Duplicate Data FounD
输出: 案例2:
Enter 3 numbers from 0 to 9 , separated by comma (,)
23,24,25
Data entered in a corect manner
The final array ::
23
24
25