2016-07-26 2 views
-2

을 감안할 때이 :문자열에서 변수의 세트에 액세스하려고 (JAVA)

System.out.println("Make a choice : (1), (2), (3)"); 
//validation is a scanner already declare elsewhere 
n = validation.nextLine();   
switch (n) { 
    case "1": 
     play(1); 
     break; 
    case "2": 
     play(2); 
     break; 
    case "3": 
     play(3); 
     break; 
    default: 
     System.out.println("invalid"); 

/?? means I don't know 
public static void play(1??){ 
System.out.print("Did you win? ((y)es or (n)o) "); 
choice = validation.nextLine(); 
// if yes ?? ++win1 
// if no ?? ++loose1 
// I know how to do those loops, I don't know how to make the variable choice fit the current case (++win2 and ++loose2 ans the case 2: for example) 
} 

내 문제, 모든 경우에, 증가되어야하는 특정 변수 세트 (예를 casevar1, win1가, loose1 등)의 경우 2이 선택되면 play() 메소드의 변수가 이제 자동으로 적절한 변수 (예 : casevar2, win2, loose2 등)를 참조하기를 원합니다. 그렇다면이 정보를 play() 방법으로 전달하는 방법은 무엇입니까?

+2

아마 자신의 클래스에 매개 변수를 마무리하고 그 클래스의 일부 객체를 배열에 넣으시겠습니까? –

+1

가장 간단한 방법은 1,2,3을 play 메소드로 전달하기 때문에 어떤 파라미터를 받았는지 간단히 확인할 수 있습니다. 가장할만한 장식 방법은 아니지만 이것이 요구 사항을 충족시킬 것입니다. –

+0

David Wallace : 저를 도울 수있는 링크가 있습니까? 전혀 전문가가 아니며 클래스, 배열 및 기타를 만들고 조작하는 방법을 모르겠다 ... 프로그래밍을 처음 사용합니다. 나는 그 일을해야한다는 것을 알아야한다. 나는 비주얼 베이직에 약간의 경험이 있었기 때문에, 나는 아무것도 모른다는 것을 알고있다. ... (자원으로 무엇을 제안 하겠는가?) –

답변

0

처럼 뭔가를해야만 할 수 있습니다. 그 부분은 메서드에 매개 변수를 전달하는 방법이라고 생각합니다. 코드와 의견을 따르십시오

//I used 3 integers just for demonstration purpose 
    int casevar1, win1, loose1,casevar2, win2, loose2; 
    public static void main(String[]arghs){ 

     System.out.println("Make a choice : (1), (2), (3)"); 
     //validation is a scanner already declare elsewhere 
     n = validation.nextLine(); 

     switch (n) { 
      case "1": 
       //assign values 
       casevar1 =7; win1 =9; loose1 =0; 
       play(casevar1, win1, loose1); //pass appropriate variables to play method 
       break; 
      case "2": 
       //assign values 
       casevar2 =17; win2 =8; loose2 = 4; 
       play(casevar2, win2, loose2); //pass appropriate variables to play method 
       break; 
      case "3": 
       //do like case "1"/case "2" 
       break; 
      default: 
       System.out.println("invalid"); 
     }//end of switch 
    } 

    //an example of a play method recieving 3 integers. 
    public static void play(int casevar, int win, int loose){ 

     System.out.print("Did you win? ((y)es or (n)o) "); 
     choice = validation.nextLine(); 
     //follow Aku Nour's answer 
    } 

편집 : 귀하의 질문에 대답하는 예를 추가했습니다. @ 데이비드 월러스가 제안 , 데이터를 휘게 객체를 만듭니다

public class Test { 

    public static void main(String[]arghs){ 

     public static void main(String[]arghs){ 

      System.out.println("Make a choice : (1), (2), (3)"); 
      //validation is a scanner already declare elsewhere 
      n = validation.nextLine(); 

      switch (n) { 
      case "1": 
       //set an object initialized to casevar =7, win =9, loose = 0 
       play(new DataObject(7,9, 0)); 
       break; 
      case "2": 
       play(new DataObject(17,8, 4)); 
       break; 
      case "3": 
       //do like case "1"/case "2" 
       break; 
      default: 
       System.out.println("invalid"); 
      }//end of switch 
     } 

     //an example of a play method recieving 3 integers. 
     public static void play(){ 

      System.out.print("Did you win? ((y)es or (n)o) "); 
      choice = validation.nextLine(); 
      //follow Aku Nour's answer 
     } 
    } 


    //play method receiving data object 
    public static void play(DataObject data){ 

     System.out.print("Did you win? ((y)es or (n)o) "); 
     choice = validation.nextLine(); 

     // 
     casevar++; 
    } 

    //as David Wallace proposed 
    //an object containing the 3 parameters you mentioned 
    class DataObject { 


     private int casevar; private int win; private int loose; 

     DataObject(int casevar, int win, int loose){ 

      this.casevar = casevar; 
      this.win = win; 
      this.loose = loose; 
     } 

     public int getCasevar() { 
      return casevar; 
     } 

     public void setCasevar(int casevar) { 
      this.casevar = casevar; 
     } 

     public int getWin() { 
      return win; 
     } 

     public void setWin(int win) { 
      this.win = win; 
     } 

     public int getLoose() { 
      return loose; 
     } 

     public void setLoose(int loose) { 
      this.loose = loose; 
     } 
    } 

} 

을가 응답하지 않거나 명확하지 충분히 주저하지 마십시오.

+0

첫 번째 예제는 무엇을하고 싶은가에 가깝습니다 ... 예를 들어, 내가 play 함수에서 원한다면, 다음과 같이 할 수 있습니다 : ++ casevar 그리고 이것이 적절한 casevar1을 증가시킬 것입니다. 또는 casevar2 또는 casevar3 swich 시나리오에 따라, 어떻게합니까? 이 방법은 변수의 값을 전달하는 것이지만 한 방향으로 만 보이는 것입니다 ... 내 말은 어떻게됩니까? 죄송합니다. 내가 충분히 명확하지 않다면, 여기가 처음입니다. 다음 번에 myselft를 더 잘 표현하려고 노력할 것입니다. 감사합니다! –

+0

예를 들어 사례 1을 선택하고 재생 방법에서 ++ casevar을 수행하는 경우 결과는 casevar1 = 8이 될 것입니다. 그러나 올바른 케이스 1을 선택하는 경우, 결과는 여전히 8인데, 여기서 9가 될 것입니다. 그 방법이 더 명확 해지기를 바랍니다. –

+0

이 경우 데이비드 월리스 (David Wallace)가 제안한대로 데이터를 보관할 객체를 만들 수 있습니다. 나는 예제를 추가했다. – c0der

1

당신은 내가 완전히 당신의 질문을 이해하지 확신이

public static void play(String s){ 

    System.out.print("Did you win? ((y)es or (n)o) "); 
    choice = validation.nextLine(); 

    if("1".equals(s)) { 
     if("y".equals(choice)) { 
      win1 ++; 
     } else if ("n".equals(choice)) { 
      loose1 ++; 
     } 
    } 

    if("2".equals(s)) { 
     if("y".equals(choice)) { 
      win2 ++; 
     } else if ("n".equals(choice)) { 
      loose2 ++; 
     } 
    } 
} 
+0

호, 내가 너를 얻는다. 흥미 롭다. 나는 그 타입의 것을 시도 할 것이고, 나는 너에게 돌아올 것이다. 그러나 내가 의미하는 것을 얻을 수 있다면, 나는 그것을 한꺼번에 할 수 있기를 바라고있다. 3 가지 경우를 처리 할 수있는 단일 루프를 수행 할 수 있다면 ... (JAVA의 두 번째 주입니다. 어쨌든 아무 도움이되므로 정말 고마워요!) –

1

여러분, 저는 영감을 얻어 제 질문에 대답했습니다. 같은 주에

, 그

case "1": 
    play(1, nbEasy, easyPos, easyNeg); 
    break; 
case "2": 
    play(2, nbInter, interPos, interNeg); 
    break; 
case "3": 
    //same thing with hard 

추천하고 재생() 메소드에 뭔가, 뭔가 :

public static void play(int niv, int nbGames, int nbPos, int nbNeg){ 
    ++nbGames; 
    System.out.print("Completed? ((y)yes or (n)o) "); 
    choice = validation.nextLine(); 
    if (choice.equals("y")){ 
     ++nbPos;  
    } 
    else if (choice.equals("n")) 
     ++nbNeg; 

    switch (niv){ 
     case 1: 
      nbEasy=nbGames; easyPos=nbPos; easyNeg=nbNeg; 
     case 2: 
      nbInter=nbGames; interPos=nbPos; interNeg=nbNeg; 
     case 3: 
      //same thing with hard 
    } 
} 

그것은 내가 때문에, 나를 위해 완벽 나는 이런 식으로했다 play() 메서드의 첫 번째 섹션에 줄을 많이 추가 할 수 있으며, 주 및 끝 부분에 스위치로 전달 된 내용을 사용하여 새 값에 적절한 변수에 영향을 미치게됩니다.

나는 모두에게 감사하고, 나는이 프로그래밍에 익숙하지 않고,이 공동체에 처음 익숙해졌지만, 여러 곳을 시도해 보았을 때, 그곳이 최고로 보인다. 당신은 예의 바르고 친절하며, 모든 규칙을 읽고이 장소에 더 잘 적응하고, 더 많은 질문을 준비하며, 내가 할 수있게 될 때, 나는 다른 사람들을 도울 것입니다. 이 곳은 훌륭합니다. 나는 너희들을 사랑해.

+0

의견에 감사드립니다. 도움을 청하고, 도움을 청하기 위해 투표했습니다. – c0der