陷入无限循环(带开关语句)

时间:2015-09-27 19:54:23

标签: java while-loop switch-statement

我有一段时间没有使用过Java,并且遇到了一个简单但令人沮丧的错误。我的代码是这样的:

public static void main(String[] args) throws IOException{
    String input = "";
    BufferedReader in = new BufferedReader(new InputStreamReader(System.in));
    while(input != "Q"){
        input = in.readLine().toUpperCase();
        switch(input){
            default: break;
            case "A": //do stuff break;
            case "B": //do stuff break;
        }
    }
    System.out.println("Out of the loop!"); //never reaches this statement
}

我运行了eclipse调试器,它清楚地显示输入变量在用户输入时被更改为“Q”,但是while循环不断重启。

3 个答案:

答案 0 :(得分:3)

改为

F73

将字符串与Cell(j,6)进行比较而不是while(!input.equals("Q"))

此外,在每个案例后使用equals(),否则您将拥有fallthrough

答案 1 :(得分:0)

您应该使用equals(值比较)而不是==(比较参考)比较字符串:

while (!"Q".equals(input))

提示:如果您在字符串字面值上调用equals,则NullPointerException不会失败,以防input null false CollapsingToolbarLayout 1}} - 在这种情况下,它只会返回<android.support.design.widget.CoordinatorLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" android:id="@+id/main" android:layout_width="match_parent" android:layout_height="match_parent"> <android.support.design.widget.AppBarLayout android:id="@+id/app_bar_layout" android:layout_width="match_parent" android:layout_height="wrap_content"> <android.support.v7.widget.Toolbar android:id="@+id/toolbar" android:layout_width="match_parent" android:layout_height="?attr/actionBarSize" android:theme="@style/ThemeOverlay.AppCompat.ActionBar" app:layout_scrollFlags="scroll|enterAlways" /> <android.support.design.widget.TabLayout android:id="@+id/posts_pager_header" android:layout_width="match_parent" android:layout_height="wrap_content" app:tabMode="scrollable" /> </android.support.design.widget.AppBarLayout> <android.support.v4.view.ViewPager android:id="@+id/posts_pager" android:layout_width="match_parent" android:layout_height="match_parent" app:layout_behavior="@string/appbar_scrolling_view_behavior" /> </android.support.design.widget.CoordinatorLayout>

答案 2 :(得分:0)

比较字符串时必须使用input.equals("Q")