Java 从键盘读取数据以存储在字符串数组中

声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow 原文地址: http://stackoverflow.com/questions/22346306/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me): StackOverFlow

提示:将鼠标放在中文语句上可以显示对应的英文。显示中英文
时间:2020-08-13 15:05:52  来源:igfitidea点击:

Reading data from keyboard to store in string array

javastringjava.util.scanner

提问by CHAITHANYA PADALA

String s[];
System.out.println("Enter loop value");
int t = s.nextInt();
for(int i=0;i<t;i++)
{
 str[i]=s.nextLine();
}

while it reading it gives null pointer exception

当它读取它时会给出空指针异常

采纳答案by Sanjeev

What you need is something like this:

你需要的是这样的:

    Scanner s = new Scanner(System.in);

    System.out.println("Enter loop value");
    int t = s.nextInt(); // read number of element
    s.nextLine(); // consume new line
    String str[] = new String[t];
    for(int i=0;i<t;i++)
    {
     str[i]=s.nextLine();
    }

    System.out.println(Arrays.toString(str));

Hope this helps.

希望这可以帮助。

回答by rzysia

Try something like this:

尝试这样的事情:

BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
System.out.println("Enter loop value");
    String a[] = new String[Integer.parseInt(br.readLine())];
    for (int i = 0; i < a.length; i++) {
        a[i] = br.readLine();
    }

回答by slartidan

I changed the typos and missing declarations in your code:

我更改了代码中的拼写错误和缺失的声明:

package snippet;

import java.io.IOException;
import java.util.Arrays;
import java.util.Scanner;

public class Snippet {

    public static void main(String[] args) throws IOException {

        Scanner s = new Scanner(System.in);

        String str[] = new String[10];
        System.out.println("Enter loop value (maximum 9)");
        int t = s.nextInt();
        for (int i = 0; i <= t; i++) {
            str[i] = s.nextLine();
        }

        System.out.println("your entered lines:");
        System.out.println(Arrays.toString(str));
    }

}

However, I would recommend to store the values in a Listinstead of an Array. I also prefer using a BufferedReaderto using a Scanner.

但是,我建议将值存储在 aList而不是Array. 我也更喜欢使用 a 而不是BufferedReader使用Scanner.

回答by CHAITHANYA PADALA

//After modifying my code works well
import java.io.*;
import java.util.Scanner;
class Sample 
{
public static void main(String[] args) throws Exception
{
    bufferedReader();
            scanner();
}
    static void bufferedReader()throws Exception{
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
            System.out.println("Enter Number of Strings");
            int len = Integer.parseInt(br.readLine());
            String a[] = new String[len];
    for(int i=0; i<len; i++){
                System.out.println("Enter String"+ (i+1));
        a[i] = br.readLine();
    }
            for(String str : a)
            System.out.println(str);
    }
    static void scanner(){
        Scanner s = new Scanner(System.in);
            System.out.println("Enter Number of Strings");
            int len = Integer.parseInt(s.nextLine());
            String a[] = new String[len];
    for(int i=0; i<len; i++){
                System.out.println("Enter String"+ (i+1));
        a[i] = s.nextLine();
    }
            for(String str : a)
            System.out.println(str);
    }
}

But when using Scanner nextLine() skips the data when read if any one knows please post description with example

但是当使用 Scanner 时 nextLine() 在读取时跳过数据,如果有人知道请用示例发布说明