2016-11-07 16 views
0

私はあまりにも自分自身を先んじて取得しているので、私はおそらくちょうど始めている学習コードを与えるしようとしているが、どんな助けも素晴らしいだろう!私のプログラムマナー(JAVA初心者)

私は、自分のプログラムに正式であれインフォーマルであれ、2つの異なる性格特性を試してみようと努力してきました。

これ以降、すべての参照(名前の選択肢を含む)を決定するブール値 "MANNERS"を使用して、この単一のブール値に対して機能をチェックできるようにしようとしました。

myNameが参照されるたびに、ランダムに選択する必要があります。それは何が設定されているかに応じて、formalNameRefかinformalNameRefのいずれかです。作品で

、これは働いていたが、作業を停止しているようだ、私は一緒にそれをすべて入れたら------->

パブリッククラスnameChoice {

//A list of formal things to call me 
public static String formName(){ 
    ArrayList<String> formNames = new ArrayList<String>(); 
    formNames.add("Master"); 
    formNames.add("Sir"); 
    formNames.add("Mr Smith"); 

    Random formalNs = new Random(); 
    formalNs.nextInt(3); 

return formNames.get(formalNs.nextInt(3)); 

} 
//A list of informal things to call me 
public static String nickName(){ 

    ArrayList<String> nickNames = new ArrayList<String>(); 
    nickNames.add("Ol' Fella"); 
    nickNames.add("Buddy"); 
    nickNames.add("Dude"); 
    nickNames.add("Mate"); 
    nickNames.add("John"); 

    Random nickNs = new Random(); 
    nickNs.nextInt(5); 

    return nickNames.get(nickNs.nextInt(4)); 
} 

public static void main(String[] args){ 

    //keeps saying "value of manners is not used"??could this be the problem?? 
    boolean manners; 
    //as default, it choices a formal name 
    String myName; 

//は私に要求します私はそれが正式になりたい場合は(「マナー」を持っている)

 System.out.println("Do you want me to be formal?"); 
     Scanner formal = new Scanner(System.in); 
     String formalInput = formal.next(); 

     //If formal, turn manners ON 
     if (formalInput.equals("yes")||formalInput.equals("yep")){ 

      manners = true; 
     } 
     //If informal, turn manners OFF 
     else {manners = false;}; 

     //If manners are ON, choose random name from formName() 
     if (manners = true){ 
      myName = formName(); 
     } 
     //Else choose from nickName() 
     else{myName = nickName();}; 




    System.out.println("Hello " + myName + ", how are you?"); 

    Scanner feeling = new Scanner(System.in); 
    String feelingInput = feeling.next(); 

    if (feelingInput.equals("dunno")){ 
     System.out.println("Huh.."); 
    } 

    else{ 
    System.out.println("Interesting...how much sleep have you had " + myName + "?"); 
    System.out.println(myName); 
    System.out.println(myName); 

    } 


} 
} 

それは「デュード」最初の時間を言うなら、それは常に「おい」と言います。 "Sir"と初めて言うと、常に "Sir"と表示されます。 (私が望むものではなく、同じ配列から毎回別の名前を選んでいます)

私はランダムな名前を選び続けるためにどこかのループを置く必要があると思いますが、私はどこにいらっしゃいませんか。私は知りたいと思う。タイプ

答えて

0

1)ArrayList<String>をグローバルにし、nullにします。

if (manners == true) myName = formName(); 
else {myName = nickName();}; 

がリストに追加されます。 myNameStringで、ArrayList<String>が必要です。

2)以下のようなrandIntメソッドを作成します。

public static int randInt(int min, int max) { 
    Random rand = new Random(); 
    int randomNum = rand.nextInt((max - min) + 1) + min; 
    return randomNum; 
} 

3)以下の点を変更してください。

public static `ArrayList<String>` formName(){ 
    ArrayList<String> formNames = new ArrayList<String>(); 
    formNames.add("Master"); 
    formNames.add("Sir"); 
    formNames.add("Mr Smith"); 
    return formNames; 
} 

リスト変数を作成し、nullに初期化します。

ArrayList<String> myName = null; 

その後、あなたは次のようにリストを割り当てます。

myName = formName(); 

あなたは常にリストから無作為に選んだ名前を取得しますこの方法です。

System.out.println("Hello " + myName.get(randInt(0, (myName.length - 1)) + ", how are you?"); 

また

if (manners = true){ 
    myName = formName(); 
} 

ブール条件を確認するには、それは==ませ=です。あなたが上でやっていることは、マナーの価値を真実にして、常に真実にすることです。

編集:私はあなたが何を意味するかわからないんだけど例取り組んコード

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

public class nameChoice 
{ 
    public static ArrayList<String> formName() 
    { 
     ArrayList<String> formNames = new ArrayList<String>(); 
     formNames.add("Master"); 
     formNames.add("Sir"); 
     formNames.add("Mr Smith"); 
     return formNames; 
    } 

    public static ArrayList<String> nickName() 
    { 
     ArrayList<String> nickNames = new ArrayList<String>(); 
     nickNames.add("Ol' Fella"); 
     nickNames.add("Buddy"); 
     nickNames.add("Dude"); 
     nickNames.add("Mate"); 
     nickNames.add("John"); 
     return nickNames; 
    } 

    public static int randInt(int min, int max) { 
     Random rand = new Random(); 
     int randomNum = rand.nextInt((max - min) + 1) + min; 
     return randomNum; 
    } 

    public static void main(String[] args) 
    { 
     boolean manners; 
     ArrayList<String> myName; 

     System.out.println("Do you want me to be formal?"); 
     Scanner formal = new Scanner(System.in); 
     String formalInput = formal.next(); 

     if (formalInput.equals("yes") || formalInput.equals("yep")) 
     { 
      manners = true; 
     } 
     else 
     { 
      manners = false; 
     } 

     if (manners == true) 
     { 
      myName = formName(); 
     } 
     else 
     { 
      myName = nickName(); 
     } 

     System.out.println("Hello " + myName.get((randInt(0, (myName.size() - 1)))) + ", how are you?"); 
    } 
} 
+0

@DJmendyは、私はあなたがコピー/ペーストして試すことができ、コードを作業の上に貼り付けました。この場合、 'size()'になっていたはずの 'length'と誤って言ったことに注意してください。この回答が参考になって、あなたの質問に答えるなら、それを答えとしてフラグを立てることができますか?私はいくつかのポイントを取得したいので、私は答えを投稿しない限り、私は多くの人々を助けることができる、新しいと私はコメントすることはできません – JordanGS

+0

ええ、ありがとう:)私は私にも混乱していた私のコメントを削除した。 ええと、それは.lengthで動作していなかったので、すばやくgoogleした後に.size()に切り替えました。私はそれが配列だったからだと思います。ご協力いただきありがとうございます! – DJmendy

1

==ではなく、=を使用して条件をチェックします。if (manners = true)を渡すたびに、マナーブール値がTRUEに設定されています。