我最近在使用Java的Scanner时遇到了一些麻烦。当调用nextInt()
等方法时,它在按Enter后不会使用换行符
。我的解决方案是:
package scannerfix;
import java.util.Scanner;
public class scannerFix {
static Scanner input = new Scanner(System.in);
public static int takeInt() {
int retVal = input.nextInt();
input.nextLine();
return retVal;
}
public static void main(String[] args) {
int num = scannerFix.takeInt();
String word = input.nextLine();
System.out.println("\n" + num + "\t" + word);
}
}
它起作用了,但我的问题是:这有什么不好的吗?
"Enter"没有被使用,因为它等于"\n"(在Windows/Linux等中),这是一个标准分隔符。您已经使用input. nextLine()跳到下一行;
所以您的解决方案很好!
有关Scanner
类的分隔符如何工作的更多信息,请参阅:
如何在JavaScanner中使用分隔符?
一个问题是它可以隐藏输入中的一些错误。如果您希望一行有一个整数,下一行有另一个整数,但第一行包含“2 a”,那么您将其读取为2。对于某些情况,您可能希望拒绝此输入并显示错误。