如何创建特定长度的数组?

时间:2019-05-05 16:16:26

标签: arrays loops input

我正在尝试将某个数字作为输入并创建一个长度相同的数组。我知道数组从长度0到n-1的索引开始。

我无法弄清楚哪里出了错。

import java.util.Scanner;

public class A {

  public static void main(String[] args) {

    Scanner read = new Scanner(System.in);
    System.out.println("Enter the number of test cases:");
    int test = read.nextInt();
    String[] name = new String[test];


    if (test > 0 && test <= 20) {

      System.out.println("Please give " + test + " names:");

      for (int i = 0; i < name.length; i++) {

        name[i] = read.nextLine();


      }
    }
  }
}

期望:例如,如果输入为9,则数组大小为9 结果:如果输入为9,则数组创建为8

3 个答案:

答案 0 :(得分:0)

只需使用.next()而不是.nextLine()。它仅解析命令行的下一个元素。使用此功能,您还可以在一行中输入所有名称,因为“扫描仪”由空格字符而不是行分隔。

有关这两种方法的更多信息,请参见Java文档。 https://docs.oracle.com/javase/8/docs/api/java/util/Scanner.html

答案 1 :(得分:0)

问题是在read.nextInt()之后,您的位置在int之后,即行尾之前,因此循环中的第一个read.nextLine()将读取空行。 您可以在循环之前创建read.nextLine(),也可以代替nextInt,而可以使用nextLine()进行读取,并可以使用parseInt()强制转换为int,以防万一您确定在int之后按下回车键。 例如。代替

int test = read.nextInt();

int test = Integer.parseInt(read.nextLine());

如果您不想要求输入,则可以更改

    name[i] = read.nextLine();

    name[i] = read.next();

答案 2 :(得分:0)

问题不在于数组,而在于read.nextLine()。您可以使用read.next()。