2016-11-20 103 views
-2

我不是最好的编码器,所以如果你能向我解释为什么和我该怎么做才能解决这个问题,将不胜感激。有人可以帮我理解这个堆栈溢出错误

当我运行该程序时,我能够输入所有内容,但最终突出显示了带有java.lang.stackoverflowError的第一个扫描仪行。

import java.util.Scanner; 
import java.lang.Object; 
public class Login 
{ 
    Scanner input = new Scanner(System.in); 
    Scanner input2 = new Scanner(System.in); 
    public void createAccount(){ 
     System.out.print("Create a 6 digit account number: "); 
     int createNumber = input.nextInt(); 

     System.out.print("Create a 4 digit PIN: "); 
     int createPin = input2.nextInt(); 
     Login acc = new Login(); 
     acc.loginScreen(createNumber, createPin); 

    } 
    public void loginScreen(int createNumber, int createPin){ 
     System.out.println("Enter your acocunt number: "); 
     int accEntryNumber = input.nextInt(); 
     int lengthNum = String.valueOf(accEntryNumber).length(); 

     System.out.println("Enter your pin: "); 
     int accEntryPin = input2.nextInt(); 
     int lengthPin = String.valueOf(accEntryPin).length(); 
     if(accEntryPin == createPin && accEntryNumber == createNumber){ 
      Main access = new Main(); 
      access.mainMenu(); 
     } 
     else{ 
      System.out.println("Access denied"); 
     } 
    } 
} 
+0

究竟是什么问题? –

+0

当我运行程序时,我可以输入所有内容,但最终突出显示了第一个扫描仪行,java.lang.stackoverflowError – Johnm

+0

请勿使用两个扫描仪。坚持一个。 – Squiddie

回答

-1

您可以使用一个单一的扫描仪为您的整个程序。像这样:

import java.util.Scanner; 
import java.lang.Object; 
public class Login 
{ 
    Scanner input = new Scanner(System.in); 
    public void createAccount(){ 
     System.out.print("Create a 6 digit account number: "); 
     int createNumber = input.nextInt(); 

     System.out.print("Create a 4 digit PIN: "); 
     int createPin = input.nextInt(); 
     Login acc = new Login(); 
     acc.loginScreen(createNumber, createPin); 

    } 
    public void loginScreen(int createNumber, int createPin){ 
     System.out.println("Enter your acocunt number: "); 
     int accEntryNumber = input.nextInt(); 
     int lengthNum = String.valueOf(accEntryNumber).length(); 

     System.out.println("Enter your pin: "); 
     int accEntryPin = input.nextInt(); 
     int lengthPin = String.valueOf(accEntryPin).length(); 
     if(accEntryPin == createPin && accEntryNumber == createNumber){ 
      Main access = new Main(); 
      access.mainMenu(); 
     } 
     else{ 
      System.out.println("Access denied"); 
     } 
    } 
} 
+0

我得到相同的确切错误,是否有可能错误是在不同的类?它显示错误是该登录类中的扫描器 – Johnm

+0

它可能位于不同的类中。运行此代码时,我没有收到错误消息。 –

+0

我使用“扫描仪输入=新扫描仪(System.in);”在其他大多数课程中,这可能是一个问题吗? – Johnm