如果try块中的条件总是变为真,即使它不应该

时间:2014-05-24 16:35:57

标签: java

我想管理一个if条件中的命令只显示来自方法“zutat1”的字符串输入在文件“Fleisch.txt”中。无论zutat1中的输入是什么,它都会始终显示。

public String zubezut1() {
    String zz1;
    zz1 = zutat1;

    //String[] zubereitung = {"Apple","Mango","Peach","Banana","Orange","Grapes","Watermelon","Tomato"};
    //String random = (zubereitung[new Random().nextInt(zubereitung.length)]);


    try{
      BufferedReader in = new BufferedReader(new FileReader("Fleisch.txt"));
      String zeile = zutat1;
      if (zeile.matches(zutat1)) {
        System.out.print(zutat1 + "_in_mudgerechte_Stücke_schneiden_und_in_der_Pfanne_scharf_anbraten");
      } // end of if

    }
    catch (IOException e) {
      e.printStackTrace();
    }
    return zz1;
  }    

2 个答案:

答案 0 :(得分:0)

问题是您基本上将zeile设置为与zutat1相同的字符串! 由于它们都包含(或者说指向)相同的内容,因此它们将始终匹配。

从您的变量名称我猜您可能想要从您的文件中读取一行并将其与zutat1的内容进行比较。

您应该查看BufferedReader文档,尤其是readLine方法。这应该可以帮助你搞清楚。

您还应该查看string文档,并检查matches是否是您真正想要使用的内容。

答案 1 :(得分:0)

你设置

 String zeile = zutat1;

并在紧随其后的行中检查它们是否匹配

if (zeile.matches(zutat1)) {

在这种情况下,将始终匹配,因为您在前一行中将它们设置为相等。

你可能想要的是:

zutat1 = "Mango";             // Set a value to be compared
String zeile = in.readLine(); // Read a line from the file

if (zeile.matches(zutat1)) {  // Compare the read line with the value