BufferedReader即使按下回车后也没有输入

时间:2013-08-28 09:27:38

标签: java string bufferedreader

public static void main (String Args[]) throws IOException{

    BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
    System.out.println("Enter String");
    String s = br.readLine();
    s=s+" ";
    s.toLowerCase();
    String word="";
    String max="";
    int count=0;

    for(int i=0; i<s.length();i++){
        char ch = s.charAt(i);
        while(ch!=' ')
            word+=ch;

        if(word.length()>max.length()){
            max=word; count++;
        }
        else count++;
    }System.out.println(max+" , "+count);
}
}

我想找到字符串中最大的单词而不使用split或类似的东西,并且还要计算句子中有多少单词。 当我输入任何东西并按回车时没有任何反应。有什么问题?

4 个答案:

答案 0 :(得分:1)

从控制台读取输入没有问题。

while(ch!=' ')
    word+=ch;

它会产生无限循环。你应该更新这个while-loop -

while(ch!=' '){
   word+=ch;
   ch = s.charAt(++i);
}

答案 1 :(得分:0)

你有一个无限循环

 while(ch!=' ')
            word+=ch;

答案 2 :(得分:0)

Man,它有效,readLine中没有错误。

但是我看到了无限循环:

while(ch!=' ')
        word+=ch;

请检查逻辑一次......

答案 3 :(得分:0)

public class LengthiestWord {

    public static void main (String Args[]) throws IOException{

        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        System.out.println("Enter String");
        String s = br.readLine();
        s=s+" ";
        s.toLowerCase();
        String word="";
        String max="";
        int count=0;

        for(int i=0; i<s.length();i++){
            char ch = s.charAt(i);
            while(ch!=' '){
                 word+=ch;
                 ch = s.charAt(++i);
           }

            if(word.length()>max.length()){
                max=word;
                word="";
                count++;
            }
            else {
                count++;
                word="";
            }
        }
        System.out.println(max+" , "+count);
    }
}

O / P ----&gt;&gt;&gt;&gt;

输入字符串

所有错误都已修复

错误,4