0

出于某种原因,我输入的所有内容都不断得到空行,我正在尝试制作一个读取输入的程序,删除所有不必要的空格,但每个单词之间有一个空格。然后打印出所有的行。

不使用任何哨兵来阻止。

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) ;

                }

         }
}
4

3 回答 3

5
while(scan.hasNextLine()){
       count++;
       scan.nextLine();
}

这将在您的程序真正启动之前读取所有输入。

在那之后(如果程序走得那么远,STDIN 通常不会在控制台上关闭),scan 在第二个循环中没有更多要读取的内容了。

此外,小写的类名与大写的变量名一样令人困惑。至少你在这里是一致的;-)

于 2013-03-27T04:41:18.127 回答
1
while (scan.hasNextLine()) {
    count++;
    scan.nextLine();
}

这对我来说似乎是一个无限循环。它只是不断地从控制台读取输入。你继续打字,这继续阅读。

于 2013-03-27T04:41:22.583 回答
0

将您的输入添加到列表中,然后您可以继续执行逻辑。我已将代码修改如下。

import java.util.Scanner ;
import java.util.ArrayList ;
import java.lang.Character;
import java.lang.String ;

public class trim {

public static void main (String[]args) {
    String SongName = " " ;
    String Song = " " ;          
    int count = 0 ;
ArrayList lst = new ArrayList();

    Scanner scan = new Scanner(System.in);
    while(scan.hasNextLine()) {                  
        lst.add(scan.nextLine());
        count++;
    }

for (int i=0 ; i < count ; i ++)  {                   
    SongName = (String)lst.get(i);  
    SongName = SongName.trim() ;
    SongName = SongName.replaceAll("\\s+"," ");
    if (Song== " " ) {
       Song = SongName;
    }
    else  {
       Song  = Song + "\n" +SongName ;
    }                   
    }
System.out.println(Song) ;
  }
}        
于 2013-03-27T07:04:41.047 回答