2012-12-04 1 views
1

간단한 수학 문제를 해결하는 프로그램을 작성 중입니다. 내가 뭘 하려는지는 스캐너 레벨에 문자열을 입력해도 오류가 발생하지 않도록하기 위해서입니다. 레벨은 수학 문제의 난이도를 선택하는 것입니다. 나는 parseInt를 시도했지만 지금 무엇을 해야할지를 놓치고있다.정수가 아닌 값을 스캐너에 입력 할 때 오류가 발생하지 않도록하려면 어떻게해야합니까?

import java.util.Random; 
import java.util.Scanner; 
public class Test { 
    static Scanner keyboard = new Scanner(System.in); 
    static Random generator = new Random(); 
    public static void main(String[] args) { 
     String level = intro();//This method intorduces the program, 
     questions(level);//This does the actual computation. 
    } 
    public static String intro() { 

     System.out.println("HI - I am your friendly arithmetic tutor."); 
     System.out.print("What is your name? "); 
     String name = keyboard.nextLine(); 
     System.out.print("What level do you choose? "); 
     String level = keyboard.nextLine(); 
     System.out.println("OK " + name + ", here are ten exercises for you at the level " + level + "."); 
     System.out.println("Good luck."); 
     return level; 
    } 
    public static void questions(String level) { 
     int value = 0, random1 = 0, random2 = 0; 
     int r = 0, score = 0; 
     int x = Integer.parseInt("level"); 
     if (x==1) { 
      r = 4;   
     }  
     else if(x==2) { 
      r = 9; 
     } 
     else if(x==3) { 
      r = 50; 
     } 
     for (int i = 0; i<10; i++) { 
      random1 = generator.nextInt(r);//first random number. 
      random2 = generator.nextInt(r);//second random number. 
      System.out.print(random1 + " + " + random2 + " = "); 
      int ans = keyboard.nextInt(); 
      if((random1 + random2)== ans) { 
       System.out.println("Your answer is correct!"); 
       score+=1; 
      } 
      else if ((random1 + random2)!= ans) { 
      System.out.println("Your answer is wrong!"); 
      } 
     } 
     if (score==10 || score==9) { 
      if (score==10 && x == 3) { 
       System.out.println("This system is of no further use."); 
      } 
      else { 
       System.out.println("Choose a higher difficulty"); 
      } 
      System.out.println("You got " + score + " out or 10"); 
     } 
     else if (score<=8 && score>=6) { 
      System.out.println("You got " + score + " out or 10"); 
      System.out.println("Do the test again"); 
     } 
     else if (score>6) { 
      System.out.println("You got " + score + " out or 10"); 
      System.out.println("Come back for extra lessons"); 
     } 
    } 
} 

답변

0

내가 볼 첫 번째 오류는 Integer.parseInt()

int x = Integer.parseInt("level"); 

가 있어야 할 문자열 "수준"대신 문자열 변수라는 이름의 레벨을 시도한다는 것입니다

int x = Integer.parseInt(level); 

또한 레벨 정의시대신 keyboard.nextInt을 사용할 수 있습니다.

String level = keyboard.nextInt(); 

그런 다음

상의 Integer.parseInt() 작업을 나중에 할 필요가 없습니다 것입니다
관련 문제