代码之家  ›  专栏  ›  技术社区  ›  Elanthirian

我的Java程序意外终止

  •  0
  • Elanthirian  · 技术社区  · 9 年前

    我创建了一个类似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 回复  |  直到 9 年前
        1
  •  3
  •   JamesB    9 年前

    我认为您的问题是以下因素的组合:

    • 使用多个扫描仪实例
    • 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;
        }
    
    }
    
        2
  •  1
  •   pL4Gu33    9 年前

    你的第二次休息;是终止循环。把它放在支架上,因为它只适用于情况2。