从用户那里获得输入总是不到1

时间:2014-08-30 15:30:49

标签: java java.util.scanner

我试图从用户那里获得n行输入(字符串)

  • 首先设置n
  • 我初始化一个字符串数组以保存输入,并循环以保存它们。

问题在于它总是意味着

  • 如果n = 1则程序终止
  • 如果n = 2则只需1输入
  • 如果n = 3则只需要2个输入,依此类推......

有什么问题?

Scanner sc = new Scanner(System.in);
//how many lines should be taken
int lines = sc.nextInt(); 
// initialize input array
String[] longWords = new String[lines] ;

//set the input from the user into the array
for (int i = 0; i < longWords.length; i++) {
    longWords[i] = sc.nextLine() ;
}

2 个答案:

答案 0 :(得分:3)

这样做:

Scanner sc = new Scanner(System.in);
//how many lines should be taken
int lines = sc.nextInt(); 

//read the carret! This is, the line break entered by user when presses Enter
sc.nextLine();

// initialize input array
String[] longWords = new String[lines] ;

//set the input from the user into the array
for (int i = 0; i < longWords.length; i++) {
    longWords[i] = sc.nextLine() ;
}

答案 1 :(得分:0)

问题是nextInt()不会在输入行的末尾处理换行符,因此当您输入1时,Scanner会看到'1',\ n',但是只接受'1'。然后,当您调用nextLine()时,它会看到剩下的换行符,然后立即返回。这是一个很难找到的错误,但只要记住换行符是否还在等待处理。