如何在Java中创建、填充和打印字符串数组

如何在Java中创建、填充和打印字符串数组,java,arrays,Java,Arrays,从用户输入数据填充字符串数组时遇到问题。以下是我的问题的一个简单示例: import java.util.Scanner; public class TestArray { public static void main(String[] args){ Scanner input = new Scanner(System.in); System.out.println("Enter a number between 1 and 5");

从用户输入数据填充
字符串
数组时遇到问题。以下是我的问题的一个简单示例:

import java.util.Scanner;

public class TestArray {
    public static void main(String[] args){

        Scanner input = new Scanner(System.in);

        System.out.println("Enter a number between 1 and 5");
        int number = input.nextInt();    

        System.out.println("Now enter " + number +  " names");    
        String names = input.next();

        String[] nameList = new String[number];

        for(int i = 0; i < number; i++){
            nameList[i] = input.next();
            System.out.println(nameList[i]);
        }
    }
}     
import java.util.Scanner;
公共类测试阵列{
公共静态void main(字符串[]args){
扫描仪输入=新扫描仪(System.in);
System.out.println(“输入一个介于1和5之间的数字”);
int number=input.nextInt();
System.out.println(“现在输入”+number+“名称”);
字符串名称=input.next();
字符串[]名称列表=新字符串[编号];
for(int i=0;i
我不知道为什么这只是打印出输入的姓氏。我最终想要的是打印出每个名字。我还尝试过使用
input.nextLine()
,但没有成功

如果您有任何提示或建议,我们将不胜感激。

本课程的目的是什么

String names = input.next();
?

您根本不使用
名称
,因此会捕获数字后的下一个输入


如果你移除它,它应该会工作

您的第一个
input.next()
调用(在提示“Now enter X names”之后)正在扭曲您的数据。把它拿走

public class TestArray {
    public static void main(String[] args){

       Scanner input = new Scanner(System.in);

       System.out.println("Enter a number between 1 and 5");
       int number = input.nextInt();    

       System.out.println("Now enter " + number +  " names");

       String[] nameList = new String[number];

        for(int i = 0; i < number; i++){
            nameList[i] = input.next();
            System.out.println(nameList[i]);
        }
    }
}
公共类测试阵列{
公共静态void main(字符串[]args){
扫描仪输入=新扫描仪(System.in);
System.out.println(“输入一个介于1和5之间的数字”);
int number=input.nextInt();
System.out.println(“现在输入”+number+“名称”);
字符串[]名称列表=新字符串[编号];
for(int i=0;i
线路

 String names = input.next();
是什么导致了你的问题。如果你把它去掉,程序就会按照你描述的那样运行。或者,您可以在一个循环中填充数组,然后在打印完列表后循环。这取决于你到底想做什么

 import java.util.Scanner;

 public class test{
  public static void main(String[] args){

      Scanner input = new Scanner(System.in);

      System.out.println("Enter a number between 1 and 5");
      int number = input.nextInt();    

      System.out.println("Now enter " + number +  " names");      
      //String names = input.next();

      String[] nameList = new String[number];

       for(int i = 0; i < number; i++){
                    nameList[i] = input.next();
          System.out.println(nameList[i]);
    }    
  }
}
import java.util.Scanner;
公开课考试{
公共静态void main(字符串[]args){
扫描仪输入=新扫描仪(System.in);
System.out.println(“输入一个介于1和5之间的数字”);
int number=input.nextInt();
System.out.println(“现在输入”+number+“名称”);
//字符串名称=input.next();
字符串[]名称列表=新字符串[编号];
for(int i=0;i
输入名称后,只需使用一个单独的循环即可将其全部打印出来:

import java.util.Scanner;

public class TestArray {
    public static void main(String[] args){

        Scanner input = new Scanner(System.in);

        System.out.println("Enter a number between 1 and 5");
        int number = input.nextInt();    

        System.out.println("Now enter " + number +  " names");    
        //NOTE:  You may want to remove this line since it will mess up your data.
        //String names = input.next();

        String[] nameList = new String[number];

        for(int i = 0; i < number; i++){
            nameList[i] = input.next();
        }

        //print separate here.
        System.out.println("Here are the names you entered:  ");
        for(int i = 0; i<number; i++){
            System.out.println(nameList[i]);
        }
    }
} 
import java.util.Scanner;
公共类测试阵列{
公共静态void main(字符串[]args){
扫描仪输入=新扫描仪(System.in);
System.out.println(“输入一个介于1和5之间的数字”);
int number=input.nextInt();
System.out.println(“现在输入”+number+“名称”);
//注意:您可能需要删除这一行,因为它会弄乱您的数据。
//字符串名称=input.next();
字符串[]名称列表=新字符串[编号];
for(int i=0;ifor(int i=0;这不是完整的代码。
names
变量的意义是什么,它为什么使用第一个
输入。next()
?@RohitJain它只缺少三个右括号…对我来说很好,只需删除声明names变量的行。请原谅我没有将右括号放在上面的代码中,我想这是可以理解的。无论如何,当names变量被删除时,这确实有效,但是,它们会在每次输入后打印出来。我希望它们能够在用户全部输入后立即打印出来。是的,我在逻辑上有一个错误。不过,我很感谢您的回复。当我删除它时,它确实起作用,只是不是我想要的方式,但从这里开始我应该很好。谢谢您提供的替代解决方案Tom。