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

Смежные вопросы