如何读入数字中没有空格的3个数字

时间:2014-02-08 04:00:27

标签: java

我试图找出从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;
        }
    }

5 个答案:

答案 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