2016-08-16 5 views
0

오류 검사를 통해 코드의 유효성을 검사하려고합니다. 정수 사람들이 문자 나 그 이상을 포함하고 있지 않은지 확인하고 싶습니다. 내 코드는 다음과 같습니다. 나는 1 차원 배열을 사용하여이 문제를 해결하기로되어있다. 코드는 작동하지만 오류 검사를 추가하는 데 문제가 있습니다. 도움이 될 것입니다. 감사합니다int에 문자가 포함되어 있는지 확인하는 방법

public void getNumbers() { 
    Scanner keyboard = new Scanner(System.in); 

    int array[] = new int[5]; 
    int count = 0; 
    int entered = 0; 
    int k = -1; 

    while (entered < array.length) { 

     System.out.print("Enter a number "); 
     int number = keyboard.nextInt(); 

     if (10 <= number && number <= 100) { 

      boolean containsNumber = false; 

      entered++; 

      for (int i = 0; i < count; i++) { 
       if (number == array[i]) // i Or j 
       { 
        containsNumber = true; 
       } 
      } 
      if (!containsNumber) { 
       array[count] = number; 
       count++; 
      } else { 
       System.out.println(number + " has already been entered"); 
      } 
     } else { 
      System.out.println("number must be between 10 and 100"); 
     } 

     //what does %d do? 
     for (int j = 0; j < count; j++) { 
      System.out.printf("%d ", array[j]); 
     } 
     System.out.println(); 

    } 
} 

}

+0

정수가 입력되지 않은 경우 입력 불일치 검색을 nextint()하지 않습니까? –

+0

값이 이미 입력되어 있는지 확인하십시오. –

+0

예, 예외가 발생합니다. 내 강사가 나에게 예외가 있기를 원하지 않는다고 생각합니다. 내 수업에서 다른 사람이 hasNextInt를 사용하여 작동한다고했습니다. – Stepsie94

답변

0

keyboard.nextInt()InputMismatchException 입력 한 경우 문자열을 발생합니다.

Scanner에 정수가 있는지 확인하려면 keyboard.hasNextInt()을 사용할 수 있습니다.

또는, 당신은 정수인지 여부를 감지하는 s.matches(".*\\d+.*")를 사용하여 다음 문자열로 입력을, 그리고 것 String s = keyboard.next()로 입력을 읽을 수 있습니다.

업데이트 : 질문에 답변 - keyboard.hasNextInt()은 부울을 반환합니다. 예를 들어, System.out.print("Enter a number") 이후에 이 숫자 입력을받을 수 있는지 확인하기 위해 if 문을 사용할 수 있습니다. if(keyboard.hasNextInt). 이것이 사실이라면 사용자가 숫자 입력을 입력 했으므로 계속해서 int number = keyboard.nextInt()이라고 말할 수 있습니다. false 인 경우 사용자 입력이 숫자가 아닌 것을 알 수 있습니다.

+0

keyboard.hasNextInt()를 코드에 넣는 데 어려움을 겪고 있습니다. if 문을 사용합니까? – Stepsie94

+0

@ Stepsie94 나는 (잘하면)이 문제를 해결하기 위해 내 대답을 편집했다. – AlterV

2

처음으로 번호를 입력하지 않은 경우 사용자가 프로그램에 사용자가 다시 입력하도록 요청하는 것으로 가정합니다. 이 시나리오에서는 당신이이 라인을 따라 뭔가 시도 할 수 있습니다 :

Scanner sc = new Scanner(System.in); 
System.out.println("Enter a number: "); 
while(!sc.hasNextInt()) { 
    //print some error statement 
    sc.nextLine(); 
} 
int number = sc.nextInt(); 
System.out.println("Number is: " + number); // to show the value of number 
// continue using number however you wish 

hasNextInt() 이후 반환 입력이 정수인지 여부를 결정하는 부울 프로그램은 프로그램까지 동안 루프를 할 수 떠나지 않을 것 사용자가 정수를 입력했는지 확인하십시오.

관련 문제