java这个代码有什么问题?
由于某种原因,我输入的任何东西我都会得到空行 我试图制作一个程序来读取输入,删除所有不必要的空格,但每个单词之间只有一个空格。然后把所有的行都打印出来
不使用任何哨兵来阻止
import java.util.Scanner ;
import java.lang.Character;
import java.lang.String ;
public class trim
{
public static void main (String[]args)
{
String SongName = " " ;
String Song = " " ;
int i = 0 ;
int count = 0 ;
Scanner scan = new Scanner(System.in);
while(scan.hasNextLine())
{
count++;
scan.nextLine();
}
for ( ; i < count ; i ++)
{
if (scan.hasNext())
{
SongName =scan.nextLine() ;
SongName = SongName.trim() ;
SongName = SongName.replaceAll("\\s+"," ");
if (Song== " " )
{
Song = SongName;
}
else
{
Song = Song + "\n" +SongName ;
}
}
System.out.println(Song) ;
}
}
}
# 1 楼答案
这将在程序真正启动之前读取所有输入
在那之后(如果程序甚至走了那么远,STDIN通常不会在控制台上关闭),scan在第二个循环中没有更多的内容可读
此外,小写类名称与大写变量名称一样容易混淆。至少你在这里是一致的;-)
# 2 楼答案
将您的输入添加到列表中,然后您就可以继续执行逻辑了。我修改了代码如下
# 3 楼答案
对我来说,这似乎是一个无限循环。它只是不断地从控制台读取输入。你不停地打字,这不停地阅读