2013-12-18 3 views
0

내 문자열을 println 할 때 문제가 발생합니다. 나는 전체 println이 "BAR, ORANGE, PLUM"과 같은 것을 읽길 원합니다. 문자열이 println 문과 통신하지 않는 것 같습니다. 나는 아주 새로운 자바이고 나는 극도로 길을 잃었으므로 당신의 제안을 매우 기본적으로 설명하십시오. 나는 정말로 대답뿐 아니라 설명을 주셔서 감사하게 생각합니다. 다시 그런 실수를하지 마십시오. 시간 내 주셔서 감사합니다. 가시성이 코드 블록으로 제한되도록해결되지 않은 문자열이있는 Println

/* 
* This program will simulate playing a slot machine. 
* It will provide instructions to the user with an initial stake of $50 and then let the user play until either the money runs out or the player quits. 
* Author: Zac Saunders 
* Version: 1.3 
*/ 


import acm.program.*; 

import java.awt.*; 

import acm.util.RandomGenerator; 

public class SlotMachine_V2 extends GraphicsProgram { 

    RandomGenerator rgen = new RandomGenerator(); 

    public void run(){ 

     waitForClick(); 
     rollWheels(); 
    } 

    public void rollWheels(){ 

     Wheel_1(); 
     Wheel_2(); 
     Wheel_3(); 
     println("You rolled:"+aa, + bb, +cc""); 
     run(); 

    } 

    public void Wheel_1(){ 

     int a = rgen.nextInt(1, 6); 

     if(a == 1){//BAR// 

      String aa =(" BAR, "); 

     }else if(a == 2){//BELL// 

      String aa =(" BELL, "); 

     }else if(a == 3){//PLUM// 

      String aa =(" PLUM, "); 

     }else if(a == 4){//ORANGE// 

      String aa =(" ORANGE, "); 

     }else if(a == 5){//CHERRY// 

      String aa =(" CHERRY, ");  

     }else if(a == 6){//DASH (-)// 

      String aa =(" -, ");   
     } 
    } 

    public void Wheel_2(){ 

     int b = rgen.nextInt(1, 6); 

     if(b == 1){//BAR// 

      String bb =("BAR, "); 

     }else if(b == 2){//BELL// 

      String bb =("BELL, "); 

     }else if(b == 3){//PLUM// 

      String bb =("PLUM, "); 

     }else if(b == 4){//ORANGE// 

      String bb =("ORANGE, "); 

     }else if(b == 5){//CHERRY// 

      String bb =("CHERRY, ");   

     }else if(b == 6){//DASH (-)// 

      String bb =("-, ");  
     } 

    } 

    public void Wheel_3(){ 

     int c = rgen.nextInt(1, 6); 

     if(c == 1){//BAR// 

      String cc =("and BAR"); 

     }else if(c == 2){//BELL// 

      String cc =("and BELL"); 

     }else if(c == 3){//PLUM// 

      String cc =("and PLUM");  

     }else if(c == 4){//ORANGE// 

      String cc =("and ORANGE"); 

     }else if(c == 5){//CHERRY// 

      String cc =("and CHERRY");  

     }else if(c == 6){//DASH (-)// 

      String cc =("and -");  
     } 
    } 

} 
+0

주위에있는 쉼표를 넣지 마십시오 당신의'끈'의 주위에. 부디. –

+0

왜 같은 문자열을 반복해서 선언하고 있습니까? – iWumbo

+0

임의의 Generator 세트가 휠을 ​​결정하면 그 String은 aa 또는 bb 또는 cc가됩니다. 이것을하기위한 더 좋은 방법이 있습니까? – TheZac2613

답변

3

클래스에 변수를 선언해야합니다. 당신이 지금하는 방식으로, 당신은 메소드에서 새로운 변수를 선언하고 그것들은 그 메소드에서만 범위 내에 있습니다. 그런 다음

public class SlotMachine_V2 extends GraphicsProgram { 

    String aa; 
    String bb; 
    String cc; 

    ... 

} 

당신이 그들을 사용

public void Wheel_1(){ 

    int a = rgen.nextInt(1, 6); 

    if(a == 1){//BAR// 

     aa = " BAR, "; 

    ... 
} 
+0

감사합니다. println을 수정하는 것처럼 보이지만 Wheel 1/2/3 메서드에서는 "aa/bb/cc 로컬 변수의 값이 사용되지 않습니다." – TheZac2613

+0

로컬 변수가 필요하지 않습니다. 그들을 제거하십시오. – Szymon

+0

제거하면 println이 aa, bb 및 cc 값을 어떻게 얻습니까? 이것이 내가 새로운 것이라고 말했듯이 이것이 어리석은 질문이라면 유감입니다. – TheZac2613

2

당신은 코드 블록 내에서 String aa =(" BAR, ");를 선언한다.

단지 RandomGenerator rgen = new RandomGenerator(); 아래의 클래스 수준 즉에 String aa 이동 시도는 괜찮습니다.

1

단지

System.out.println(String.format("%s, %s, and %s",aa,bb,cc)); 

를 사용하고 괄호를 넣어 시작하지 마십시오 AA, BB, CC

+0

고마워요! 자, 이것과 Szymon이 제안한 것의 차이점은 무엇입니까? – TheZac2613

+0

쉼표와 문자열 형식을 추적 할 필요가 없습니다. 코드 타당성을 높이기 위해 연결 문자열을 병합 형식으로 변환하는 표준 프로세스입니다. –

+0

문제가 해결되었습니다. 감사합니다. – TheZac2613