打印数组的组件,但它打印 null + 指定索引处的值 (JAVA)
Printing an Array's components but it prints null + the value at the specified index (JAVA)
import java.util.Scanner;
import java.util.Arrays;
class Main
{
public static void main(String[] args)
{
Scanner amount = new Scanner(System.in);
System.out.print("How many names would you like to enter?: ");
int total = amount.nextInt();
String[] mainArray = new String[total];
for (int i=0; i<total; i++){
Scanner names = new Scanner(System.in);
System.out.print("Gimme a name!: ");
String name = names.nextLine();
mainArray[i]=mainArray[i]+name.charAt(0);
}
System.out.println(Arrays.toString(mainArray)+"");
}
}
输入:3
输入:萌
输入:卷曲
输入:维德
Returns
How many names would you like to enter?: 3
Gimme a name!: Moe
Gimme a name!: Curly
Gimme a name!: Vader
[nullM, nullC, nullV]
代码应 return“MCV”,无空格。我不知道为什么它在打印指定字符之后会预先打印 Null,它应该在数组填充后打印,或者至少我认为它应该。
您可以使用 StringBuilder
或 String
或 StringBuffer
等类型的变量来附加所需的值。目前,您正在将值附加到已初始化为 null
的数组元素。此外,您不需要 Scanner
的多个实例( 并且永远不会在循环中 )。
演示:
import java.util.Arrays;
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.print("How many names would you like to enter?: ");
int total = Integer.parseInt(scanner.nextLine());
String[] mainArray = new String[total];
StringBuilder sb = new StringBuilder();
for (int i = 0; i < total; i++) {
System.out.print("Gimme a name!: ");
mainArray[i] = scanner.nextLine();
if (mainArray[i].length() >= 1) {
sb.append(mainArray[i].charAt(0));
}
}
System.out.println(Arrays.toString(mainArray));
System.out.println(sb);
}
}
样本运行:
How many names would you like to enter?: 3
Gimme a name!: Moe
Gimme a name!: Vader
Gimme a name!: Curly
[Moe, Vader, Curly]
MVC
请注意,我使用了 Integer.parseInt(scanner.nextLine())
而不是 scanner.nextInt()
,这样在整数输入之后输入的换行符就不会被下一次扫描消耗掉。检查 this discussion 以了解更多信息。
import java.util.Scanner;
import java.util.Arrays;
class Main
{
public static void main(String[] args)
{
Scanner amount = new Scanner(System.in);
System.out.print("How many names would you like to enter?: ");
int total = amount.nextInt();
String[] mainArray = new String[total];
for (int i=0; i<total; i++){
Scanner names = new Scanner(System.in);
System.out.print("Gimme a name!: ");
String name = names.nextLine();
mainArray[i]=mainArray[i]+name.charAt(0);
}
System.out.println(Arrays.toString(mainArray)+"");
}
}
输入:3 输入:萌 输入:卷曲 输入:维德
Returns
How many names would you like to enter?: 3
Gimme a name!: Moe
Gimme a name!: Curly
Gimme a name!: Vader
[nullM, nullC, nullV]
代码应 return“MCV”,无空格。我不知道为什么它在打印指定字符之后会预先打印 Null,它应该在数组填充后打印,或者至少我认为它应该。
您可以使用 StringBuilder
或 String
或 StringBuffer
等类型的变量来附加所需的值。目前,您正在将值附加到已初始化为 null
的数组元素。此外,您不需要 Scanner
的多个实例( 并且永远不会在循环中 )。
演示:
import java.util.Arrays;
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.print("How many names would you like to enter?: ");
int total = Integer.parseInt(scanner.nextLine());
String[] mainArray = new String[total];
StringBuilder sb = new StringBuilder();
for (int i = 0; i < total; i++) {
System.out.print("Gimme a name!: ");
mainArray[i] = scanner.nextLine();
if (mainArray[i].length() >= 1) {
sb.append(mainArray[i].charAt(0));
}
}
System.out.println(Arrays.toString(mainArray));
System.out.println(sb);
}
}
样本运行:
How many names would you like to enter?: 3
Gimme a name!: Moe
Gimme a name!: Vader
Gimme a name!: Curly
[Moe, Vader, Curly]
MVC
请注意,我使用了 Integer.parseInt(scanner.nextLine())
而不是 scanner.nextInt()
,这样在整数输入之后输入的换行符就不会被下一次扫描消耗掉。检查 this discussion 以了解更多信息。