Java 数组扫描阻止下一次字符串扫描?

Java 数组扫描阻止下一次字符串扫描?,java,arrays,Java,Arrays,所以我有这个代码: 我在数组中插入4个数字 插入后,我想检查哪两个数字最大,哪两个最小 在执行此检查之前,我想询问用户是否要添加新号码 此号码将替换其他号码之一 问题是我的代码在这一行之后就停止了: System.out.println("Do you wish to add another number [Y/N]?"); 我永远无法输入Y或N(“是/否”)。但是,如果我在它之前删除扫描,这是可行的。我使用的import语句是import.util.*任何想法或有用的建议都将不胜感激 代

所以我有这个代码:

  • 我在数组中插入4个数字
  • 插入后,我想检查哪两个数字最大,哪两个最小
  • 在执行此检查之前,我想询问用户是否要添加新号码
  • 此号码将替换其他号码之一
问题是我的代码在这一行之后就停止了:

System.out.println("Do you wish to add another number [Y/N]?");
我永远无法输入Y或N(“是/否”)。但是,如果我在它之前删除扫描,这是可行的。我使用的import语句是
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]);
}

您希望使用的是
Scanner.next()
而不是
Scanner.nextLine()

您希望使用的是
Scanner.next()
而不是
Scanner.nextLine()

问题在于
Scanner#nextInt()
和类似方法不处理行尾令牌。一种解决方案是,在调用
nextLine()
后,只需调用
nextLine()
,即可处理并丢弃此令牌

i、 e


问题在于
Scanner#nextInt()
和类似方法不处理行尾标记。一种解决方案是,在调用
nextLine()
后,只需调用
nextLine()
,即可处理并丢弃此令牌

i、 e



这是因为
sc.nextInt()
您需要跳过它或使用
sc.nextLine()
并适当地解析结果。Java不喜欢对int和String使用相同的扫描程序。对nextLine()使用第二个扫描仪,它就会工作。@StefanNeubert:这完全是错误的。我只是尝试了一下,java不在乎。@Lion:nextInt调用没有问题,我只是尝试了一下,效果很好。@Kane-当你使用Scanner.nextInt()时,它本身并不使用新行(或其他分隔符),所以返回的下一个标记通常是空字符串。因此,您需要使用
Scanner.nextLine()
跟踪它。当然没有什么错,但是以这种方式使用它时应该小心。这是因为
sc.nextInt()
您需要跳过它或使用
sc.nextLine()
并适当地解析结果。Java不喜欢对int和String使用相同的扫描程序。对nextLine()使用第二个扫描仪,它就会工作。@StefanNeubert:这完全是错误的。我只是尝试了一下,java不在乎。@Lion:nextInt调用没有问题,我只是尝试了一下,效果很好。@Kane-当你使用Scanner.nextInt()时,它本身并不使用新行(或其他分隔符),所以返回的下一个标记通常是空字符串。因此,您需要使用
Scanner.nextLine()
跟踪它。当然没有什么错,但在以这种方式使用它时应该小心。1+因为这是可行的,但有时你需要调用
nextLine()
,然后这就不起作用了。公平地说,这只是对他的问题的最快回答。现在使用这个解决方案,因为这是我正在做的一个小练习。谢谢你的帮助@欢迎你,尼尔森。如果您使用了答案,您应该将其标记为已接受,以便其他人看到问题已得到回答。1+因为这是可行的,但有时您需要调用
nextLine()
,然后这就行不通了。很公平,这是对他的问题最快的回答。现在使用这个解决方案,因为这是我正在做的一个小练习。谢谢你的帮助@欢迎你,尼尔森。如果您使用了答案,您应该将其标记为已接受,以便其他人看到问题已被回答。
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();