将输入作为字符串序列,直到在JAVA中找到为止

将输入作为字符串序列,直到在JAVA中找到为止,java,arrays,string,eclipse,while-loop,Java,Arrays,String,Eclipse,While Loop,我想将字符串作为用户的输入,直到找到输入,即一系列不同行中的字符串,并将字符串存储在string类型的arraylist中。我用JAVA编写了这段代码,但它不能按要求工作 导入java.util.ArrayList; 导入java.util.Scanner 公共类词语变形{ public static void main(String[] args) { Scanner sc = new Scanner(System.in); ArrayList<String> in

我想将字符串作为用户的输入,直到找到输入,即一系列不同行中的字符串,并将字符串存储在string类型的arraylist中。我用JAVA编写了这段代码,但它不能按要求工作

导入java.util.ArrayList; 导入java.util.Scanner

公共类词语变形{

public static void main(String[] args) {
    Scanner sc = new Scanner(System.in);
    ArrayList<String> input = new ArrayList<String>();

    while(!(sc.next().equals("#"))) {
        String s = sc.next();
        input.add(s);
    }
    System.out.println(input);
}
}

我得到了这个输出,其中只存储了备用字符串。我也试过sc.nextLine,但都是一样的

输入倾角 嘴唇 疯狂的 地图 枫树 也许 衬垫 皮普 豆荚 流行音乐 液 小口喝 片 滑溜的 香料 粘贴 股票


输出-[lip,map,may,pip,pop,sip,slick,stick,]

您正在呼叫sc.next并检查该行是否等于,然后读取下一个令牌。这导致它与每个备用令牌一起发生

您可以这样做:

String token = "";
while(!((token = sc.next()).equals("#")))input.add(token);

而不是你的while循环。

我已经修改了你的代码,请检查下面

import java.util.ArrayList; import java.util.Scanner;

public class wordMetaMorphism {

public static void main(String[] args) {
    Scanner sc = new Scanner(System.in);
    ArrayList<String> input = new ArrayList<String>();

    while(sc.hasNext()) {
        String s = sc.next();
        if(s.equals("#")) break;
        input.add(s);
    }
    System.out.println(input);
}

}
import java.util.ArrayList;
import java.util.Scanner;

public class wordMetaMorphism {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        ArrayList<String> input = new ArrayList<String>();
        String s = sc.next();
        while(!(s.equals("#"))) {
            input.add(s);
            s = sc.next();
        }
        System.out.println(input);
    }
}
sc.next获取下一个令牌。每次你叫它。不是你刚才在上一次呼叫sc.next时读到的。变量是你的朋友。