Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/356.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
打印数组';s组件,但它打印空+;指定索引处的值(JAVA)_Java_Arrays_Java.util.scanner - Fatal编程技术网

打印数组';s组件,但它打印空+;指定索引处的值(JAVA)

打印数组';s组件,但它打印空+;指定索引处的值(JAVA),java,arrays,java.util.scanner,Java,Arrays,Java.util.scanner,代码应该返回“MCV”,没有空格。我不知道为什么它会在打印指定字符之前打印Null,它应该在数组填充后打印,或者至少我认为应该打印。您可以使用StringBuilder或String或StringBuffer等类型的变量将所需值附加到。当前,您正在向已初始化为null的数组元素追加值。此外,您不需要多个扫描仪的实例(且从不在循环中) 演示: How many names would you like to enter?: 3 Gimme a name!: Moe Gimme a name!:

代码应该返回“MCV”,没有空格。我不知道为什么它会在打印指定字符之前打印Null,它应该在数组填充后打印,或者至少我认为应该打印。

您可以使用
StringBuilder
String
StringBuffer
等类型的变量将所需值附加到。当前,您正在向已初始化为
null
的数组元素追加值。此外,您不需要多个
扫描仪的实例(且从不在循环中)

演示:

How many names would you like to enter?: 3
Gimme a name!: Moe 
Gimme a name!: Curly
Gimme a name!: Vader
[nullM, nullC, nullV]
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);
    }
}

请注意,我使用了
Integer.parseInt(scanner.nextLine())
而不是
scanner.nextInt()
,这样整数输入后输入的新行字符就不会被下次扫描使用。查看以了解更多信息。

mainArray[i]=mainArray[i]+name.charAt(0)
mainArray[i]
此时您认为存储在
mainArray[i]中的值是什么?或者更好的问题是,当您开始时,mainArray[i]中存储了什么?一个小提示:您不必创建新的扫描仪来读取不同的输入。您可以使用amount来读取名称。在使用“amount.close()和names.close()”
mainArray[i]=mainArray[i]+name.charAt(0)读取扫描仪后,还应关闭扫描仪
mainArray[i]=null+name.charAt(0)相同在您的代码中。你真的认为这就是你想要做的吗?不要在程序结束前关闭任何使用System.in的扫描仪。一旦您关闭这样的扫描仪,它将关闭System.in,祝您好运重新打开它。
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