为什么空的空间存储在Array的第一个单元格中?

时间:2014-11-25 11:44:52

标签: java arrays string

有些机构可以解释为什么在我的String Array的第一个单元格中存储空白空间?我试图将通过控制台输入的每一行存储到一个String数组中。

import java.util.Scanner;

public class ClassNameHere {
   public static void main(String[] args) {
      Scanner in = new Scanner(System.in);
      int numberOfLines = in.nextInt();

      String[] lines = new String[numberOfLines];      

      for( int i = 0; i < numberOfLines; i++ ){
          lines[i] = in.nextLine();            
      }

      for( int i = 0; i < numberOfLines; i++ ){
          System.out.println(lines[i]);
      }
   }
}

6 个答案:

答案 0 :(得分:1)

致电in.nextInt()后,第一次拨打in.nextLine()会返回同一行的其余部分,因此它为空。

您应该在循环之前添加对in.nextLine()的调用以使用该空行。

      int numberOfLines = in.nextInt();

      String[] lines = new String[numberOfLines];      

      in.nextLine(); // add this
      for( int i = 0; i < numberOfLines; i++ ){
          lines[i] = in.nextLine();            
      }

      for( int i = 0; i < numberOfLines; i++ ){
          System.out.println(lines[i]);
      }

答案 1 :(得分:0)

以下代码适合您。

int numberOfLines = in.nextInt();
in.nextLine(); //Add this.

in.nextInt();读取整数值,然后点击输入in.nextLine();

答案 2 :(得分:0)

相关代码是

// this reads a number, not the new line after the number
int numberOfLines = in.nextInt();
// reads the rest of the first line you typed.
lines[i] = in.nextLine(); 

如果您想忽略号码后面的其余部分,请添加in.nextLine();

答案 3 :(得分:0)

您可以使用nextLine()而不是int numberOfLines = in.nextInt();

答案 4 :(得分:0)

我想这是因为方法nextInt()只读取数字(3),然后第一次调用newline就会获取后面的nextLine()

答案 5 :(得分:0)

in.nextInt()之后只读取int值而不是换行符。因此,您的in.nextLine()会读取换行符,因此您的第一个索引为空。要消除此问题,请在阅读in.nextLine()后添加虚拟int

int numberOfLines = in.nextInt();
in.nextLine();

另一种方法是使用nextLine()代替nextInt()来读取并解析int的输入。

int numberOfLines = Integer.parseInt(in.nextLine());