2015-03-03 188 views
0

我已经创建了一个类似twitter的程序。 这里是我的程序的一部分。我的Java程序意外终止

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被执行扫描仪获取输入在几秒钟的断裂会意外终止而不显示任何错误,则没有调用登录功能!如何解决这个问题,我是初学者。

+0

你能分享你看到的输出吗?你看到你的打印声明吗? – SMA 2015-03-03 11:20:02

+0

请提供详细代码 – 2015-03-03 11:22:03

+0

@SMA它不会调用accounts.login(); – Elanthirian 2015-03-03 12:08:23

回答

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

你的第二次休息;终止你的循环。它设置在支架上,因为它的唯一的情况下2.

+0

感谢yu !!,但accounts.follow();没有打电话! – Elanthirian 2015-03-03 11:49:03