0

所以我有这个代码:

  • 我将 4 个数字插入到一个数组中。
  • 在我插入这些之后,我想检查哪两个数字是最大的,哪两个是最小的。
  • 在进行此检查之前,我想询问用户是否要添加新号码。
  • 这个数字将取代其他数字之一。

问题是我的代码在此行之后停止:

System.out.println("Do you wish to add another number [Y/N]?");

我永远无法输入 Y 或 N(“是/否”)。但是,如果我删除它之前的扫描,这将有效。我使用的导入语句是import.util.*; 任何想法或有用的建议,我们不胜感激!

这是代码:

Scanner sc = new Scanner (System.in);

int[] array;
array = new int[4];

System.out.println("Enter nr1:");
array[0] = sc.nextInt();

System.out.println("Enter nr2:");
array[1] = sc.nextInt();

System.out.println("Enter nr3:");
array[2] = sc.nextInt();

System.out.println("Enter nr4:");
array[3] = sc.nextInt();  

System.out.println("Do you wish to add another number [Y/N]?");
String answer = sc.nextLine();


if ("N".equals(answer)){

    Arrays.sort(array);

    System.out.println(Arrays.toString(array));
    System.out.println("Samllest value: " + array[0]);
    System.out.println("Second smalles value: " + array[1]);
    System.out.println("Second biggest value: " + array[2]);
    System.out.println("Biggest value: " + array[3]);
}
4

2 回答 2

2

The problem is that Scanner#nextInt() and similar methods do not handle the End-Of-Line token. One solution is to simply call nextLine() after calling nextInt() to handle and discard this token.

i.e.,

System.out.println("Enter nr1:");
array[0] = sc.nextInt();
sc.nextLine();

System.out.println("Enter nr2:");
array[1] = sc.nextInt();
sc.nextLine();

System.out.println("Enter nr3:");
array[2] = sc.nextInt();
sc.nextLine();

System.out.println("Enter nr4:");
array[3] = sc.nextInt();  
sc.nextLine();

System.out.println("Do you wish to add another number [Y/N]?");
String answer = sc.nextLine();
于 2013-01-29T21:36:36.460 回答
1

你想使用Scanner.next()not Scanner.nextLine()

于 2013-01-29T21:35:15.803 回答