字符串比较没有突破while循环

时间:2015-11-25 08:40:51

标签: java string compare

我正在尝试这些方法:

 # RSpec
 # spec/support/factory_girl.rb
 RSpec.configure do |config|
   config.include FactoryGirl::Syntax::Methods
 end

出现时,为什么 if 语句没有突破循环?

6 个答案:

答案 0 :(得分:0)

很可能这条线并不完全是"#"例如,它之后可能有一个空格。我建议您查看调试器或编辑器中的行,以确切了解String的字符。

尝试打印以下内容以帮助查看字符串的实际内容。

System.out.println(Arrays.toString(line.toCharArray());

如果您有尾随空格,可以使用trim

删除这些空格
if (line.trim().equals(stopChar)) break;

答案 1 :(得分:0)

如果字符串包含其他字符,例如输入$353323058181636,EV,D,T,567888.9,+12C,FFFFE000#(来自您对@PeterLawrey的回答的答案),请使用以下代码而不是String.equals

if(line.contains(stopChr)) break;

如果结尾停止字符,您也可以使用:

if(line.endsWith(stopChr)) break;

答案 2 :(得分:0)

以下代码正在运行:

 BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        String line = "";
        String data = "";
        while ((line = br.readLine()) != null) {
            data += line;
            if (line.contains("#"))
                break;
        }

此外,您可以使用endsWith()来检查文件的结尾,而不是contains()。 你提出帮助。

答案 3 :(得分:0)

在#

之前获取所有内容
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
    String line = "";
    String data = "";
    while (true)
        {
        line = br.readLine();

        // break if terminated
        if (line==null)
            break;

        // Check : for debugging only
        System.err.println("LINE : "+line);

        // break if #
        if (line.contains("#"))
            {
            // Get first part, part after, we dont care
            int first=line.indexOf('#');
            data+=line.substring(0, first);

            break;
            }

        else
        data += line;

    }
    // See the result
    System.out.println("DATA:"+data);

答案 4 :(得分:0)

问题解决了。 readLine()函数需要字符串字符<CR>的结尾。只需更换&#34;#&#34;到&#34; \ n&#34;解决了这个问题。感谢所有伟大的团队。

答案 5 :(得分:-1)

如果输入流来自套接字,则永远不会为null。相反,readLine()方法将阻止,直到您获得新数据。