这个代码怎么了?

时间:2013-03-27 04:38:05

标签: 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) ;

                }

         }
}

3 个答案:

答案 0 :(得分:5)

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

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

之后(如果程序甚至达到那么远,STDIN通常不会在控制台上关闭),扫描在第二个循环中没有更多东西要读。

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

答案 1 :(得分:1)

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

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

答案 2 :(得分: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) ;
  }
}