public class Main {
public static void main (String[] args){
String[] StringList;
Integer[] IntegerList;
ArrayList<String> auxS = new ArrayList<>();
ArrayList<Integer> auxI = new ArrayList<>();
String order; int ord=-1;
Scanner scan = new Scanner(System.in);
order = scan.nextLine();
//do something with order
while(scan.hasNextLine()){
if(scan.hasNextInt()){
auxI.add(scan.nextInt());
}
else if(!scan.nextLine().isEmpty()){
auxS.add(scan.nextLine());
}else{ //I've tried using another scan. methods to get to this point
scan.next();
break;
}
}
}
}
正如您所看到的,我首先读取一个字符串并按“order”存储它,然后我想继续读取,直到EOF或user输入“enter”或任何其他非特定的东西,如“write'exit'”或类似的东西。我尝试使用Scan.HasNext、hasNextLine和其他涉及最后一个else的组合,但都不起作用。
如果输入是:
>>THIS WILL BE STORED IN ORDER<<
123
321
213
231
312
<enter>
我想要它停止时,没有输入,如在最后一行。将整数或字符串存储在它们自己的数组列表中是很重要的,因为我稍后会使用它,并且我需要标识每个输入数据的类型(这就是为什么我在while循环中使用hasNextInt的原因)。
通常,只要不要使用.nextline()
,它会让人困惑,而且很少能做到您想要的。如果要将整行作为单个项目读取,请更新扫描器的分隔符;将其从默认的“任意空格序列”更改为“单个换行符”:scanner.usedelimiter(“\r?\n”);
将执行该操作(在创建扫描器后立即运行该操作)。若要读取一行,请使用任何.Next()
方法(但不是.NextLine()
):是否需要int?调用.nextInt()
。要绳子吗?调用.next()
等。
然后拆分if/elseif块。空行仍然是字符串,只是,一个空行:
if (scanner.hasNextInt()) {
// deal with ints
} else {
String text = scanner.next();
if (!text.isEmpty()) {
// deal with strings
} else {
// deal with a blank line
}
}
注意:一旦您停止使用.nextline()
,您就不必抛出半随机的.nextline()
调用来“清除缓冲区”或其他操作。这种烦恼就会消失,这也是为什么你应该忘记Nextline的原因之一。通常,对于扫描仪,要么只使用.nextline()
,要么永远不要使用.nextline()
,这样效果会好得多。
我使用扫描仪阅读大约700行文本(每行一个字),并存储每行/字作为一个元素的String ArrayList构建与预定的800元素大小。然而,当在Eclipse的变量模式中调试时,我注意到ArrayList的后期元素根本没有初始化——似乎扫描仪停在一个单词的中间,在一个随机的行上。 分隔符(我已经初始化了扫描器,有“\n”分隔符和没有“\n”分隔符,没有区别)或文本内容本身都没有问题——当我切换单
问题内容: 我正在尝试编写此方法,该方法会不断从用户那里读取内容,直到输入单词“ exit”为止。我尝试了一个for和break循环;它没有用。我尝试了一段时间,但即使输入了“退出”一词也不会停止。任何想法如何解决这一问题?谢谢。 问题答案: 是错的。 你要 要么 分别取决于exit是变量还是字符串文字。在Java中,表示引用相等(例如,这两个引用指向内存中的相同地址),而。表示对象等效项,通常在
我正在尝试从系统中读取。输入是这样的:第一个数字是测试用例的数量,然后是整数,然后是一些行。 问题是,尽管循环中存在条件,但当我完成最后一个测试时,while循环不会退出。
问题内容: 扫描程序无法阅读整个句子。或者说我正在编写一种方法,该方法可以反转句子中的单词,同时保持句子中的单词顺序。 我的扫描仪: 但是当我写一个句子时,它会将第一个单词反转并停止。 问题答案: 您需要使用nextline()函数代替next()来捕获整行Change 代替
我创建了一个简单的扫描器,用于计算中的字符串数。txt文件。每个字符串位于下一行。它算错了,每次它给我数字297,甚至有超过20000个字符串。这个txt文件是由我编写的另一个程序创建的,它从网站获取链接,并使用FileWriter和BufferedWriter将其保存到。txt文件。可能有什么问题? 编辑:字符串示例:
我试图扫描一个整数,并运行一个循环来扫描字符串,直到那个整数。但这段代码跳过了第一个字符串... 有解决办法吗?