我的Java程序意外终止

时间:2015-03-03 11:16:37

标签: java switch-statement termination

我创建了一个像twitter这样的程序。 这是我的计划的一部分。

public static void main(String[] args) {
    while (true) {Scanner a = new Scanner(System.in);
        System.out.println("1.Login\t2.Sign Up\t0.Close");
        int choice = 0;
        choice = a.nextInt();
        User user = new User();
        Tweets tweets = new Tweets(uSname);
        Account accounts = new Account();
        switch (choice) {
        case 1:
                Scanner b = new Scanner(System.in);
                System.out.println("Enter UserName:");
                uSname = b.nextLine();

                Scanner c = new Scanner(System.in);
                System.out.println("Enter Your Password:");
                Cpassword = c.nextLine();


            accounts.login(uSname, Cpassword);
            Tweets t = new Tweets(uSname);
            accounts.follow();
            //t.display();

            break;
        case 2:
            try {
                signup();
            } catch (Exception e) {
                System.out.println(e);
            }

        }
        break;
    }
}

如果执行了案例1扫描仪在几秒钟的破裂中获得输入它将意外终止而不显示任何错误,它没有调用登录功能!如何解决这个问题,我是初学者。

2 个答案:

答案 0 :(得分:3)

我认为您的问题是以下各项的组合:

  • 使用多个扫描程序实例
  • nextInt()方法只读取int而不是行的其余部分。每次调用nextInt()后都需要添加一个readLine()。
  • 正如pL4Gu33所指出的那样,你的第二次休息需要在案例2中移动

请尝试使用此代码。

while (true) {
    Scanner scanner = new Scanner(System.in);
    System.out.println("1.Login\t2.Sign Up\t0.Close");
    int choice = 0;
    choice = scanner.nextInt();
    scanner.nextLine();
    User user = new User();
    Tweets tweets = new Tweets(uSname);
    Account accounts = new Account();
    switch (choice) {
    case 1:
        System.out.println("Enter UserName:");
        uSname = scanner.nextLine();
        System.out.println("Enter Your Password:");
        Cpassword = scanner.nextLine();
        accounts.login(uSname, Cpassword);
        Tweets t = new Tweets(uSname);
        accounts.follow();
        //t.display();
        break;
    case 2:
        try {
            signup();
        } catch (Exception e) {
            System.out.println(e);
        }
        break;
    }

}

答案 1 :(得分:1)

你的第二次休息;终止你的循环。将其设置在括号上,因为它仅用于案例2。