2016-07-26 8 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) 
} 

私の問題は、すべてのケースについて、インクリメントする必要がある特定の変数(例casevar1win1のセットがあり、 loose1など)、ケース2が選択されている場合は、play()メソッドの変数が自動的に適切な変数(例:casevar2win2loose2など)を参照するようにします。どうすればその情報をplay()メソッドに渡すことができますか?

+2

パラメータを独自のクラスにまとめ、そのクラスのいくつかのオブジェクトを配列に入れることがありますか? –

+1

最も簡単な方法として、1,2,3を再生メソッドに渡すので、受け取ったパラメータを簡単に確認し、それに基づいて適切な変数のセットを使用することができます。しかし、これは要件を満たすだろう。 –

+0

David Wallace:私を助けるリンクはありますか?全く専門家ではなく、クラスや配列などを作成し操作する方法がわからない...プログラミングが初めてだ。私はそれらのことを知っている必要があることを知っていることを知っている、私はビジュアルベーシックでわずかな経験しか持っていませんでした。何も分かりません... :(リソースとして何を提案しますか?) –

答えて

0

のように気にいらを行うことができます。私はそれがメソッドにパラメータを渡す方法の一部だと思います。 EDITED

//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を再度選択している場合、結果はまだ9であると思われるところではまだ8です。そのように明確になることを願っています。 –

+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

ホー、それで面白いよ、そのタイプのものを試してみると、私はあなたに戻ってくるだろう。しかし、私が意味するものを得るならば、それを1回のバッチで行うことができることを望んでいた。私が3つのケースを処理するループを1回行うことができれば...(JAVAの2周目です。何とか助けてくれるので、とても感謝します!) –

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

関連する問題