import java.util.Scanner;

public class test {
    public static Scanner input = new Scanner(System.in);

    public static void main(String[] args) {
        int num = input.nextInt();
        String[] strArr = new String[num];
        arrStrMaker(strArr);
    }

    public static void arrStrMaker(String[] arr){
        for (int i = 0; i < arr.length; i++) {
            System.out.println("String for index ["+i+"]");
            arr[i] = input.nextLine();
            System.out.println(arr[i]);
        }
    }
}


输出:

3
String for index [0]

String for index [1]


请注意,它是如何完全忽略索引0中的输入,而不将任何内容“插入”索引0中的

import java.util.Scanner;

public class test {
    public static Scanner input = new Scanner(System.in);

    public static void main(String[] args) {
        int num = 3;
        String[] strArr = new String[num];
        arrStrMaker(strArr);
    }

    public static void arrStrMaker(String[] arr){
        for (int i = 0; i < arr.length; i++) {
            System.out.println("String for index ["+i+"]");
            arr[i] = input.nextLine();
            System.out.println(arr[i]);
        }
    }
}


输出:
String for index [0]

*注意它没有忽略索引0并等待输入。

似乎是什么问题?
当我使用int num = input.nextInt();时忽略索引0。
当我使用int num = 3;等待索引0处的输入时。

最佳答案

nextLinenextInt(实际上是nextLine以及不是next-anything的任何其他nextLine调用)怪异地交互。我建议你这样做:

`input.useDelimiter("\r?\n");`


创建扫描仪(new Scanner(...))后立即创建,然后每次使用扫描仪,然后使用next()代替nextLine()。这会将“定界符”仅设置为换行符,因此,现在,扫描程序每次用户按下回车键时,扫描仪就会向您提供1个令牌;这通常是您想要从扫描仪获得的。

关于java - 字符串数组在for循环中初始化时忽略索引0,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/59529318/

10-08 23:06