获取一个或多个以字符序列结尾的行的输入,而不仅仅是按空格或新行分隔的-java

获取一个或多个以字符序列结尾的行的输入,而不仅仅是按空格或新行分隔的-java,java,string,Java,String,我需要读取以“开始”、“开始”或“开始”开头的用户输入,并且输入可以是一行或多行,直到用户写入“结束”、“结束”或“结束”。结束用非字母字符(新行、空格或“}”等)与前面的字符串分隔 我试过这样的方法,但我知道那是错误的 String everything = sc.next(); while (true) { String part = sc.next(); part.toUpperCase(); if (part.equals("END")) { ev

我需要读取以“开始”、“开始”或“开始”开头的用户输入,并且输入可以是一行或多行,直到用户写入“结束”、“结束”或“结束”。结束用非字母字符(新行、空格或“}”等)与前面的字符串分隔

我试过这样的方法,但我知道那是错误的

String everything = sc.next();
while (true) {
    String part = sc.next();
    part.toUpperCase();
    if (part.equals("END")) {
        everything = everything.concat(part);
        break;
    } else {
        everything = everything.concat(part);
    }
}

我觉得你一次做的事情太多了。你的方法可能会奏效,但会让事情变得更复杂。首先,获取用户输入并将其存储在列表中。一旦他按下END,然后写一些代码来连接它,或者你想用它做的任何事情

    Scanner sc=new Scanner(System.in);
    ArrayList<String> all=new ArrayList<>();
    while (true) {
        String part = sc.next();
        if (part.toUpperCase().equals("END")) {
            break;
        }
        all.add(part);
    }
//then do whatever you want with that list.
Scanner sc=新扫描仪(System.in);
ArrayList all=新的ArrayList();
while(true){
字符串部分=sc.next();
if(part.toUpperCase().equals(“END”)){
打破
}
全部。添加(部分);
}
//然后你想怎么做就怎么做。

part=part.toUpperCase()字符串是不可变的。或者只使用
equalsIgnoreCase
代替
equals
。谢谢,我没有注意到这一点,但这不是主要问题。从您的问题来看,您不太清楚您的问题是什么。您是否需要将
扫描仪的分隔符设置为除空格以外的其他字符?我需要使用“end”结束用户输入,并且在该单词之前的分隔符可以是除字母以外的任何字符。但是有一个问题,当用户输入例如“end”时,程序应该结束获取输入。啊,好的。然后将:.equals(“结束”)更改为.contains(“结束”)