数组的第一个值

时间:2016-01-09 23:22:30

标签: java arrays

我是java的新手。我的代码。我使用Scanner确定了我的String数组大小和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 个答案:

答案 0 :(得分:5)

可以看到第一个条目,它恰好是一个空白String

发生这种情况的原因是,当您调用int n = sc.nextInt();并且用户按 Enter 时,Scanner会读取整数,但会将行尾字符保留在缓冲液中。

当您使用sc.next()阅读第一个字符串时,会立即扫描行尾“剩余”,并将其作为第一个空白的String呈现给您的程序。

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

答案 1 :(得分:-1)

而不是

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 character(nextLine()实现为消耗字符,直到遇到\ n)