2016-11-23 1 views
0

그래, 프로그래밍에 익숙하지 않아 지금까지 내가 할 수있는 것을 탐구 중이다. 나는 게임의 시작처럼 보이는 코드를 썼다. 내 목표는 컴퓨터가 3 명의 다른 사용자에게 자신의 이름을 물어보고 "롤"이라는 단어를 입력하여 임의의 번호를 할당하도록 요청하는 것입니다. 그런 다음 컴퓨터가 누가 가장 먼저 갈 것인지를 가장 높은 숫자로 확인합니다. 코드를 실행하면 코드가 가장 높은 숫자를 확인해야하는 시점까지 코드가 작동합니다. 지금까지이 쓴 :스레드 "main"의 예외 java.lang.NumberFormatException : 입력 문자열의 경우 : "Roll"

import java.util.Scanner; 
import java.util.Random; 
class apples{ 
public static void main(String args[]){ 
Scanner name = new Scanner(System.in); 
Random order = new Random(); 
String n1; 
String n2; 
String n3; 
String a1; 
String a2; 
String a3; 
System.out.println("Enter the name of the first player: "); 
n1 = name.nextLine(); 
System.out.println("Enter the name of the second player: "); 
n2 = name.nextLine(); 
System.out.println("Enter the name of the third player: "); 
n3 = name.nextLine(); 
System.out.println(n1+ " type 'Roll' for your number: "); 
a1 = name.nextLine(); 
if(a1.equals("Roll")){ 
String player1 =String.valueOf(1+order.nextInt(10)); 
System.out.println(player1); 
}else{ 
System.out.println("Please type in Roll."); 
    } 
    System.out.println(n2+ " type 'Roll' for your number: "); 
    a2 = name.nextLine(); 
    if(a2.equals("Roll")){ 
    String player2 =String.valueOf(1+order.nextInt(10)); 
    System.out.println(player2); 
}else{ 
    System.out.println("Please type in Roll."); 
    } 
    System.out.println(n3+ " type 'Roll' for your number: "); 
    a3 = name.nextLine(); 
    if(a3.equals("Roll")){ 
    String player3 =String.valueOf(1+order.nextInt(10)); 
    System.out.println(player3); 
    }else{ 
    System.out.println("Please type in Roll."); 
    } 

int num1 = Integer.parseInt(a1); 
int num2 = Integer.parseInt(a2); 
int num3 = Integer.parseInt(a3); 
    if(num1>num2 && num1>num3){ 
    System.out.println(n1+" You will go first."); 
    }else{ 
    if(num2>num1 && num2>num3){ 
     System.out.println(n2+" You will go first."); 
    }else{ 
     if(num3>num1 && num3>num2){ 
     System.out.println(n3+" You will go first"); 
     } 
    } 
    } 
} 

내가 수신하고 오류 메시지는 이것이다 : 나는 재생기, player2, player3에 (A3) A2, 문자열의 A1을 변경하고 볼 시도

Exception in thread "main" java.lang.NumberFormatException: For input  string: "Roll" 
at java.lang.NumberFormatException.forInputString(Unknown Source) 
at java.lang.Integer.parseInt(Unknown Source) 
at java.lang.Integer.parseInt(Unknown Source) 
at apples.main(apples.java:44) 

그게 효과가있다면 player1이 변수로 해석 될 수 없다고 말합니다. 사전에 도움을 주셔서 감사합니다!

+1

코드를 형식화하십시오. 그것이 그대로서는 것은 거의 불가능합니다. –

+0

기본적으로 "롤"을 정수로 변환하려고합니다. –

+0

"int num1 = Integer.parseInt (a1)"은 String을 Int로 구문 분석합니다. 그리고 이것은 이것을 좋아하지 않습니다. 어쩌면 3에서 임의의 숫자를 할당할까요? 그러면 무작위로 주문이 선택됩니다. 무엇인가 ... = INT NUM1 인 Math.random() * 4 = INT NUM2 인 Math.random() * 4 = INT num3 인 Math.random() * 4 –

답변

0

문제는 다음과 같은 순서에 의해 트리거됩니다 : 당신은 당신의 문자열이 숫자 만 포함하고 제외 할 수 밤은 정수, 문자열을 변환하려고

int num1 = Integer.parseInt(a1); 
int num2 = Integer.parseInt(a2); 
int num3 = Integer.parseInt(a3); 

. 귀하의 경우에는

, 당신의 문자열은 다음과 같이 :

a1 = "Roll" 
a2 = "Roll" 
a3 = "Roll" 

나는이 작업 할 올바른 값을이 arent 생각합니다. 그냥 약간의 팁

player1 = String.valueOf(1 + order.nextInt(10)); 


import java.util.Scanner; 
import java.util.Random; 

class apples { 

    public static void main(String args[]) { 
     Scanner name = new Scanner(System.in); 
     Random order = new Random(); 
     String player1 = null; 
     String player2 = null; 
     String player3 = null; 
     System.out.println("Enter the name of the first player: "); 
     String n1 = name.nextLine(); 
     System.out.println("Enter the name of the second player: "); 
     String n2 = name.nextLine(); 
     System.out.println("Enter the name of the third player: "); 
     String n3 = name.nextLine(); 
     System.out.println(n1 + " type 'Roll' for your number: "); 
     String a1 = name.nextLine(); 
     if (a1.equals("Roll")) { 
      player1 = String.valueOf(1 + order.nextInt(10)); 
      System.out.println(player1); 
     } else { 
      System.out.println("Please type in Roll."); 
      player1 = "0"; 
     } 
     System.out.println(n2 + " type 'Roll' for your number: "); 
     String a2 = name.nextLine(); 
     if (a2.equals("Roll")) { 
      player2 = String.valueOf(1 + order.nextInt(10)); 
      System.out.println(player2); 
     } else { 
      System.out.println("Please type in Roll."); 
      player2 = "0"; 
     } 
     System.out.println(n3 + " type 'Roll' for your number: "); 
     String a3 = name.nextLine(); 
     if (a3.equals("Roll")) { 
      player3 = String.valueOf(1 + order.nextInt(10)); 
      System.out.println(player3); 
     } else { 
      System.out.println("Please type in Roll."); 
      player3 = "0"; 
     } 
     int num1 = Integer.parseInt(player1); 
     int num2 = Integer.parseInt(player2); 
     int num3 = Integer.parseInt(player3); 
     if (num1 > num2 && num1 > num3) { 
      System.out.println(n1 + " You will go first."); 
     } else { 
      if (num2 > num1 && num2 > num3) { 
       System.out.println(n2 + " You will go first."); 
      } else { 
       if (num3 > num1 && num3 > num2) { 
        System.out.println(n3 + " You will go first"); 
       } 
      } 
     } 
    } 
} 

: 당신은 당신을 통해 얻을 입력 작업 할

int numberPlayerOne; 
....... 
....... 
numberPlayerOne = 1 + order.nextInt(10); 
: 정수로 문자열에서 생성 된 번호를 변환 방지하기 위해 같은 직접 정수로 캐스팅

생성 된 숫자를 직접 정수로 파싱하려면 다음 코드를 사용하십시오.

import java.util.Scanner; 
import java.util.Random; 

class apples { 

    public static void main(String args[]) { 
     Scanner name = new Scanner(System.in); 
     Random order = new Random(); 
     int numberPlayerOne = 0; 
     int numberPlayerTwo = 0; 
     int numberPlayerThree = 0; 
     System.out.println("Enter the name of the first player: "); 
     String n1 = name.nextLine(); 
     System.out.println("Enter the name of the second player: "); 
     String n2 = name.nextLine(); 
     System.out.println("Enter the name of the third player: "); 
     String n3 = name.nextLine(); 
     System.out.println(n1 + " type 'Roll' for your number: "); 
     String a1 = name.nextLine(); 
     if (a1.equals("Roll")) { 
      numberPlayerOne = 1 + order.nextInt(10); 
      System.out.println(numberPlayerOne); 
     } else { 
      System.out.println("Please type in Roll."); 
     } 
     System.out.println(n2 + " type 'Roll' for your number: "); 
     String a2 = name.nextLine(); 
     if (a2.equals("Roll")) { 
      numberPlayerTwo = 1 + order.nextInt(10); 
      System.out.println(numberPlayerTwo); 
     } else { 
      System.out.println("Please type in Roll."); 
     } 
     System.out.println(n3 + " type 'Roll' for your number: "); 
     String a3 = name.nextLine(); 
     if (a3.equals("Roll")) { 
      numberPlayerThree = 1 + order.nextInt(10); 
      System.out.println(numberPlayerThree); 
     } else { 
      System.out.println("Please type in Roll."); 
     } 
     if (numberPlayerOne > numberPlayerTwo && numberPlayerOne > numberPlayerThree) { 
      System.out.println(n1 + " You will go first."); 
     } else { 
      if (numberPlayerTwo > numberPlayerOne && numberPlayerTwo > numberPlayerThree) { 
       System.out.println(n2 + " You will go first."); 
      } else { 
       if (numberPlayerThree > numberPlayerOne && numberPlayerThree > numberPlayerTwo) { 
        System.out.println(n3 + " You will go first"); 
       } 
      } 
     } 
    } 

} 
관련 문제