【发布时间】:2021-01-08 23:20:50
【问题描述】:
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 输入:萌 输入:卷曲 输入:维达
返回
How many names would you like to enter?: 3
Gimme a name!: Moe
Gimme a name!: Curly
Gimme a name!: Vader
[nullM, nullC, nullV]
代码应该返回“MCV”,没有空格。我不知道为什么它在打印指定字符之后会预先打印 Null,它应该在填充数组后打印,或者至少我认为应该打印。
【问题讨论】:
-
mainArray[i]=mainArray[i]+name.charAt(0);您认为此时mainArray[i]中存储的值是多少? -
或者更好的问题是你开始时 mainArray[i] 中的内容是什么?
-
一个小提示:您不必创建新的扫描仪来读取不同的输入。您可以使用数量来读取名称。您还应该在使用“amount.close() 和 names.close()”阅读扫描仪后关闭扫描仪
-
mainArray[i]=mainArray[i]+name.charAt(0);与您的代码中的mainArray[i]=null+name.charAt(0);相同。你真的认为这是你想要做的吗? -
在程序结束前不要关闭任何使用 System.in 的扫描程序。一旦你关闭了这样一个扫描器,它就会关闭 System.in,祝你好运重新打开它。
标签: java arrays java.util.scanner