2017-01-10 58 views
0

我想以此爲序,我只是在今年初纔開始學習Java,所以我非常感謝您的幫助!我目前正在研究Shadowrun(第三版)程序,將裝飾轉換爲命令提示符。我希望用戶能夠輸入藍色,綠色,橙色或紅色,以主機顏色開始,同時也提供隨機選項。打印字符串在If語句中更改的變量

Scanner user_input = new Scanner(System.in); 
    String HostColor; 
    System.out.println("What is the color of the Host? (Blue, Green, Orange, Red, Random)"); //Get the Host's Color 
    HostColor = user_input.nextLine(); 
    Random rand = new Random(); 
while ((!HostColor.equals("Blue")) || (!HostColor.equals("Green")) || (!HostColor.equals("Orange")) || (!HostColor.equals("Red"))) { 
    if (HostColor.equals("Blue")) { 
    ... 
    break; 
    } 
    else if (HostColor.equals("Green")) { 
    ... 
    break; 
    } 
    else if (HostColor.equals("Orange")) { 
    ... 
    break; 
    } 
    else if (HostColor.equals("Red")) { 
    ... 
    break; 
    } 
    else if (HostColor.equals("Random")) { 
    int RandomHost = (rand.nextInt(4)); 
     if (RandomHost == 0) { 
     HostColor.equals("Blue"); 
     ... 
     break; 
     } 
     else if (RandomHost == 1) { 
     HostColor.equals("Green"); 
     ... 
     break; 
     } 
     else if (RandomHost == 2) { 
     HostColor.equals("Orange"); 
     ... 
     break; 
     } 
     else if (RandomHost == 3) { 
     HostColor.equals("Red"); 
     ... 
     break; 
     } 
    } 
    else { 
    System.out.println("Invalid Command"); 
    System.out.println("What is the color of the Host? (Blue, Green, Orange, Red, Random)"); 
    HostColor = user_input.nextLine(); 
    } 
    } 
System.out.println("Host is a " + HostColor + "..."); 

代碼在指定特定顏色時工作得很好。但是,當選擇隨機選項然後打印整體結果,而不是打印四種顏色之一時,我的代碼表示HostColor是隨機的。我很感謝任何有助於解決此問題的意見 - 先謝謝!

+0

這些'打破;'看起來有線。 – pzaenger

+2

'if(RandomHost == 0){HostColor.equals(「Blue」);'第二部分是比較而不是任務。 – csmckelvey

+1

'HostColor.equals(「」)'不會隨機設置'HostColor'的值,因此它的比較可以正確地指定它。 –

回答

2

HostColor.equals()不是賦值,equals()是在這種情況下檢查兩個字符串是否相等的比較方法。

else if (HostColor.equals("Random")) { 
int RandomHost = (rand.nextInt(4)); 
    if (RandomHost == 0) { 
    HostColor = "Blue"; 
    } 
    else if (RandomHost == 1) { 
    HostColor = "Green"; 
    } 
    else if (RandomHost == 2) { 
    HostColor = "Orange"; 
    } 
    else if (RandomHost == 3) { 
    HostColor = "Red" ; 
    } 
} 

我會建議你使用Switch statements比較string,而不是if-elseif。開關似乎是編寫這種條件代碼的更加簡潔的方式。

+0

這解決了這個問題!謝謝你的幫助! – Aldanius