有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java字符串数组在for循环中初始化索引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 = 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处等待输入


共 (2) 个答案

  1. # 1 楼答案

    尝试从输入中跳过newLine字符,如下所示:

    arr[i] = input.nextLine();
    input.skip("(\r\n|[\n\r\u2028\u2029\u0085])?");
    
  2. # 2 楼答案

    nextLinenextInt(事实上,nextLine和任何其他不是nextLinenext-anything调用)的交互都很奇怪。我建议你这样做:

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

    创建扫描器(new Scanner(...))后,每次创建扫描器,然后使用next()而不是nextLine()。这会将“分隔符”设置为仅换行符,因此现在您的扫描仪将在用户每次点击enter键时为您提供1个标记;这通常是你想要从扫描仪上得到的