这是使用扫描仪扫描多个输入的方法吗?

时间:2016-09-30 06:17:33

标签: java

import java.util.Scanner;
public class servlt {
    public static void main (String args[]){
        Scanner in1 = new Scanner(System.in);
        int t = in1.nextInt();
        int n=0, m=0;
        String input[] = new String[t];
        for ( int i = 0; i<t; i++){
            input[i] = in1.nextLine();
        }
    }
}

input[0]中没有任何内容存储。我可以知道为什么吗?

3 个答案:

答案 0 :(得分:2)

将您的代码更改为

int t = in1.nextInt();
in1.nextLine();

它需要吞下换行符

答案 1 :(得分:0)

nextInt()不会消耗\ n(新行),然后nextLine将从行数中消耗\ n字符(由nextInt左侧)。您可以在nextInt()之后立即使用Integer.parseInt(in1.nextLine())或另一个in1.nextLine()来使用\ n char。

跟踪代码

    Scanner in1 = new Scanner(System.in);
    int t = in1.nextInt(); // read a number (let say 3)
    int n=0, m=0;
    String input[] = new String[t];
    for ( int i = 0; i<t; i++){
        input[i] = in1.nextLine(); // the first time nextLine will read the \n char
    // The second time an 1 ( for example )
    // And the third time a 2 ( for example )\
    }

    // Finally you will have an array like this
    // input[0] = "\n"
    // input[0] = "1"
    // input[0] = "2"

<强> FIX

  Scanner in1 = new Scanner(System.in);
    int t = Integer.parseInt(in1.nextLine());

    int n=0, m=0;
    String input[] = new String[t];
    for ( int i = 0; i<t; i++){
        input[i] = in1.nextLine();
    }

答案 2 :(得分:0)

此处是解决方案,只需将input[i] = in1.nextLine();更改为input[i] = in1.next();即可正常工作,我会在本地测试。

import java.util.Scanner;

public class servlt {

        public static void main (String args[]){
            Scanner in1 = new Scanner(System.in);
            System.out.println("enter total number you want to store:: ");
            int t = in1.nextInt();
            int n=0, m=0;
            String input[] = new String[t];
            for ( int i = 0; i<t; i++){
                System.out.println("enter "+i+"th number :");
                input[i] = in1.next();
            }
            for (int j=0;j<t;j++)
            {
                System.out.println("input["+j+"] value is : "+input[j]);
            }
}
}