Java 使用扫描仪将行存储到阵列

Java 使用扫描仪将行存储到阵列,java,java.util.scanner,Java,Java.util.scanner,我需要复制我拥有的数据,然后将其粘贴到JavaEclipse控制台输出窗口,该数据包含一些行,每行中有一个单词。我不知道它有多少行。 如何将行存储在数组中?我尝试了这段代码,但粘贴数据后,我应该按键盘键两次。它还存储偶数行(不是所有行)。我该怎么修?谢谢 import java.util.ArrayList; import java.util.Scanner; public class SCAN { public static void main(String[] args) {

我需要复制我拥有的数据,然后将其粘贴到JavaEclipse控制台输出窗口,该数据包含一些行,每行中有一个单词。我不知道它有多少行。 如何将行存储在数组中?我尝试了这段代码,但粘贴数据后,我应该按键盘键两次。它还存储偶数行(不是所有行)。我该怎么修?谢谢

import java.util.ArrayList;

import java.util.Scanner;

public class SCAN {

    public static void main(String[] args) {
        ArrayList<String> lines = new ArrayList<String>();
        Scanner s = new Scanner(System.in);
        while(s.hasNextLine()){
            String line = s.nextLine();
            if(line.length() > 0) {
                lines.add(s.nextLine());
            } else {
                break;
            }
        }
        System.out.println(lines);
}
}
import java.util.ArrayList;
导入java.util.Scanner;
公共类扫描{
公共静态void main(字符串[]args){
ArrayList行=新的ArrayList();
扫描仪s=新的扫描仪(System.in);
而(s.hasNextLine()){
字符串行=s.nextLine();
if(line.length()>0){
添加(s.nextLine());
}否则{
打破
}
}
系统输出打印项次(行);
}
}
更改
行。添加(s.nextLine())
行。添加(行)

这里发生的事情是您正在使用
nextLine()
两次

所以第一行被读取并存储到
,但之后它会读取存储到
ArrayList的第二行
,所以您存储的第一行不会出现在
ArrayList

我应该按键盘上的Enter键两次

是的,你们必须这样做,因为当你们并没有线的时候,你们正在打破循环


如果要输入特定的行,可以使用计数器输入行数

您可以通过
扫描仪提示插入计数器的特定值

    int i=0;
    while(s.hasNextLine()){
        String line = s.nextLine();i++;
        if(line.length() > 0) {
            lines.add(line);
        } else {
            //don't add empty Line
        }
    if(i==2)break;
    }
更改
行。添加(s.nextLine())
行。添加(行)

这里发生的事情是您正在使用
nextLine()
两次

所以第一行被读取并存储到
,但之后它会读取存储到
ArrayList的第二行
,所以您存储的第一行不会出现在
ArrayList

我应该按键盘上的Enter键两次

是的,你们必须这样做,因为当你们并没有线的时候,你们正在打破循环


如果要输入特定的行,可以使用计数器输入行数

您可以通过
扫描仪提示插入计数器的特定值

    int i=0;
    while(s.hasNextLine()){
        String line = s.nextLine();i++;
        if(line.length() > 0) {
            lines.add(line);
        } else {
            //don't add empty Line
        }
    if(i==2)break;
    }
试试这个

Scanner read=new Scanner(System.in);

for(int i=0; i<size; i++) {
    array[i]=read.next();
    array[i]+=read.nextLine();
}
Scanner read=新扫描仪(System.in);
对于(inti=0;i试试这个

Scanner read=new Scanner(System.in);

for(int i=0; i<size; i++) {
    array[i]=read.next();
    array[i]+=read.nextLine();
}
Scanner read=新扫描仪(System.in);

对于(int i=0;i
if(line.length()>0){…
?抱歉!!我没有理解你的意思是当我使用此代码时,我应该粘贴Enter键两次以获得结果,我如何修复它?我想我应该用另一个代码替换if(line.length()>0){…。谢谢你不必按Enter键两次,第一次是空行,第二次是中断循环。(根据您的代码)。如果我的答案解决了您的问题,您可以接受。:)Thnks。
如果(line.length()>0){…
?抱歉!!我没有理解您的意思是,当我使用此代码时,我应该粘贴Enter键两次以获得结果,我如何修复它?我想我应该替换If(line.length()>0){…使用另一个代码。谢谢您不必两次按Enter键,第一次按Enter键表示空行,第二次按Enter键表示中断循环。(根据您的代码)。如果我的答案解决了您的问题,您可以接受它。:)谢谢。