【问题标题】:Unable to print array 0th element [duplicate]无法打印数组第 0 个元素 [重复]
【发布时间】:2013-12-29 11:27:13
【问题描述】:

先生,我正在尝试打印数组的第 0 个元素,但我不能。 这是我的代码

import java.util.Scanner;
public class prog3
{
    public static void main (String[] args){
        Scanner input = new Scanner(System.in);
        int size = input.nextInt();
        String arr[] = new String[size];

        for (int i=0; i<size; i++){
            arr[i]= input.nextLine();
        }

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

当我尝试打印 arr[0] 时,它返回空白,但是当我打印 arr[1] 时,它返回第 0 个元素值。请你帮我找出我的错误。

【问题讨论】:

  • 先生,我是java新手。请解释一下原因吗?
  • 查看我编辑的答案以获取更多信息。

标签: java arrays


【解决方案1】:

改变

arr[i]= input.nextLine();

到

arr[i]= input.next();

它有效。这是因为nextLine() 读取了一个空格,然后看起来arr[0] 是空的。您可以看到这一点,因为如果size 为 3,您只能输入两次。有关扫描仪的更多信息,请参阅http://docs.oracle.com/javase/7/docs/api/java/util/Scanner.html :)

【讨论】:

  • 为什么会这样。请解释你的答案:)
  • 是的,它的工作原理。非常感谢.. 请解释一下为什么 nextLine() 不起作用
  • 你确定他不想读包含ws的行吗?因为这会用空格标记输入,例如。
【解决方案2】:

试试这个伙伴:

    input.nextLine();   // gobble the newline
    for (int i = 0; i < size; i++) {
        arr[i] = input.nextLine();
    }

【讨论】:

  • nextLine() 方法有点古怪,因为在nextInt() 之后有一个新行“挂起”。如果你狼吞虎咽,事情就会如你所愿。
【解决方案3】:

更正的代码:在input.nextInt() 之后包含input.nextLine();

import java.util.Scanner;
public class prog3{
  public static void main (String[] args){
    Scanner input = new Scanner(System.in);
    int size = input.nextInt();
    input.nextLine();
    String arr[] = new String[size];
    for (int i=0; i<size; i++){
    arr[i]= input.nextLine();
    }
         System.out.print(arr[0]);
  }

}

输入:

2
45
95

输出

45

说明:

问题在于 input.nextInt() 命令只读取 int 值。因此,当您使用 input.nextLine() 继续阅读时,您会收到 "\n" Enter 键。所以要跳过这个,你必须添加 input.nextLine()。 Scanner issue when using nextLine after nextXXX

【讨论】:

    猜你喜欢
    • 2012-09-25
    • 1970-01-01
    • 1970-01-01
    • 2013-09-12
    • 2021-05-03
    • 2012-06-09
    • 1970-01-01
    • 1970-01-01
    • 2019-02-26
    相关资源
    最近更新 更多