数组只打印最终元素 JAVA?
Array only printing final element JAVA?
private static String[] nameArray;
public static void newPerson() {
Scanner scanner = new Scanner(System.in);
System.out.print("Name: ");
name = scanner.nextLine();
nameArray = new String[] {
name
};
}
public static void personInfo() {
System.out.print("Current Persons : \n");
StringBuilder arrayOutput = new StringBuilder();
for (String something: nameArray) {
arrayOutput.append(something);
}
String text = arrayOutput.toString();
System.out.println(text);
}
大家好,提前感谢您的帮助我遇到了一个问题我有一个循环,一旦在该方法中输入数字就会调用该方法是这样的:
所以我的问题是每当我调用 newPerson 方法并输入一个名字而不是将所有名字存储在数组中然后打印时,personInfo 方法只打印我在数组中输入的最终名字,这是为什么不显示所有名称?
每次您使用一个元素创建新的字符串数组时
nameArray = new String[]{name};
所以最新的一个将被保留,这是你的最后一个元素。因此,请确保将您的姓名附加到 nameArray。
如果不确定数组的最终大小,最好使用 ArrayList。
private static List<String> nameList = new ArrayList<String>();
public static void newPerson() {
Scanner scanner = new Scanner(System.in);
System.out.print("Name: ");
nameList.add(scanner.nextLine());
}
public static void personInfo() {
System.out.print("Current Persons : \n");
StringBuilder arrayOutput = new StringBuilder();
for (String something: nameList) {
arrayOutput.append(something);
}
String text = arrayOutput.toString();
System.out.println(text);
}
你仍然可以使用数组来完成它,但是在将新元素添加到数组中时你必须做很多工作,可能你需要为下一次插入维护索引,提供数组的初始大小,以防它溢出然后调整大小数组。
您要在每次输入后完全替换 nameArray。你必须将它添加到你的数组中。但在这种情况下使用 'ArrayList' 更容易。
基于您提供的代码构建:
private static ArrayList<String> nameArray = new ArrayList<>();
public static void newPerson() {
Scanner scanner = new Scanner(System.in);
System.out.print("Name: ");
name = scanner.nextLine();
nameArray.add(name);
}
public static void personInfo() {
System.out.print("Current Persons : \n");
StringBuilder arrayOutput = new StringBuilder();
for ( String something : nameArray) {
arrayOutput.append(something);
}
String text = arrayOutput.toString();
System.out.println(text);
}
当你这样做时
nameArray = new String[]{name};
您正在覆盖 nameArray
的内容,从而丢失所有以前保存的名称。 new String[]{name}
创建一个新的字符串数组。
使用字符串列表而不是数组,只需向其中添加新名称即可。
// use List<String> instead of String[]
private static List<String> names = new ArrayList<String>();
public static void newPerson() {
Scanner scanner = new Scanner(System.in);
System.out.print("Name: ");
name = scanner.nextLine();
// add new names to list, old names will not be deleted
names.add(name);
}
public static void personInfo() {
System.out.print("Current Persons : \n");
StringBuilder arrayOutput = new StringBuilder();
for(String something : names) {
arrayOutput.append(something);
}
String text = arrayOutput.toString();
System.out.println(text);
}
每次从用户那里获取输入时,您都在创建和替换现有的。替换列表中的添加输入。
private static String[] nameArray;
public static void newPerson() {
Scanner scanner = new Scanner(System.in);
System.out.print("Name: ");
name = scanner.nextLine();
nameArray = new String[] {
name
};
}
public static void personInfo() {
System.out.print("Current Persons : \n");
StringBuilder arrayOutput = new StringBuilder();
for (String something: nameArray) {
arrayOutput.append(something);
}
String text = arrayOutput.toString();
System.out.println(text);
}
大家好,提前感谢您的帮助我遇到了一个问题我有一个循环,一旦在该方法中输入数字就会调用该方法是这样的:
所以我的问题是每当我调用 newPerson 方法并输入一个名字而不是将所有名字存储在数组中然后打印时,personInfo 方法只打印我在数组中输入的最终名字,这是为什么不显示所有名称?
每次您使用一个元素创建新的字符串数组时 nameArray = new String[]{name}; 所以最新的一个将被保留,这是你的最后一个元素。因此,请确保将您的姓名附加到 nameArray。
如果不确定数组的最终大小,最好使用 ArrayList。
private static List<String> nameList = new ArrayList<String>();
public static void newPerson() {
Scanner scanner = new Scanner(System.in);
System.out.print("Name: ");
nameList.add(scanner.nextLine());
}
public static void personInfo() {
System.out.print("Current Persons : \n");
StringBuilder arrayOutput = new StringBuilder();
for (String something: nameList) {
arrayOutput.append(something);
}
String text = arrayOutput.toString();
System.out.println(text);
}
你仍然可以使用数组来完成它,但是在将新元素添加到数组中时你必须做很多工作,可能你需要为下一次插入维护索引,提供数组的初始大小,以防它溢出然后调整大小数组。
您要在每次输入后完全替换 nameArray。你必须将它添加到你的数组中。但在这种情况下使用 'ArrayList' 更容易。
基于您提供的代码构建:
private static ArrayList<String> nameArray = new ArrayList<>();
public static void newPerson() {
Scanner scanner = new Scanner(System.in);
System.out.print("Name: ");
name = scanner.nextLine();
nameArray.add(name);
}
public static void personInfo() {
System.out.print("Current Persons : \n");
StringBuilder arrayOutput = new StringBuilder();
for ( String something : nameArray) {
arrayOutput.append(something);
}
String text = arrayOutput.toString();
System.out.println(text);
}
当你这样做时
nameArray = new String[]{name};
您正在覆盖 nameArray
的内容,从而丢失所有以前保存的名称。 new String[]{name}
创建一个新的字符串数组。
使用字符串列表而不是数组,只需向其中添加新名称即可。
// use List<String> instead of String[]
private static List<String> names = new ArrayList<String>();
public static void newPerson() {
Scanner scanner = new Scanner(System.in);
System.out.print("Name: ");
name = scanner.nextLine();
// add new names to list, old names will not be deleted
names.add(name);
}
public static void personInfo() {
System.out.print("Current Persons : \n");
StringBuilder arrayOutput = new StringBuilder();
for(String something : names) {
arrayOutput.append(something);
}
String text = arrayOutput.toString();
System.out.println(text);
}
每次从用户那里获取输入时,您都在创建和替换现有的。替换列表中的添加输入。