当前位置: 首页 > 知识库问答 >
问题:

数组的第一个值

饶滨海
2023-03-14

我是新的java.here是我的代码。我确定我的字符串数组大小与nextint metod使用扫描仪。然后我添加了字符串与nextline metod.它似乎对我是正确的,但我不能看到我的第一个值的数组.这是什么问题在这个代码。

public class App {   
    public static void main(String[] args) {
        String[] arr;
        Scanner sc = new Scanner(System.in);
        System.out.println("write a number ");
        int n = sc.nextInt();
        arr = new String[n];

        for (int i = 0; i < n; i++) {

            arr[i] = sc.nextLine();

        }
        System.out.println(arr[0]);

    }
}

共有2个答案

白晋鹏
2023-03-14

而不是

for (int i = 0; i < n; i++) { arr[i] = sc.nextLine(); } System.out.println(arr[0]);

arr[0] = sc.nextLine();
for (int i = 0; i < n; i++) { arr[i] = sc.nextLine(); } System.out.println(arr[0]);

这是在nextInt()之后使用nexLine()时出现的一个错误,因为nextInt()不会从输入流缓冲区中提取\n,因此当调用nextLine()时,它只使用\n字符(nextLine()被实现为使用字符,直到它遇到\n)

双恩
2023-03-14

您可以看到第一个条目,它恰好是一个空白的字符串

发生这种情况的原因是当调用int n=sc.nextInt()时和用户按下回车键,扫描器读取整数,但将行尾字符保留在缓冲区中。

当您用sc.next()读取第一个字符串时,行尾的"leftover"会立即被扫描,并作为第一个String呈现给您的程序,该字符串为空白。

解决此问题的方法很简单:在sc.nextInt()之后调用sc.next(),然后忽略结果。

 类似资料: