2016-11-20 93 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