2017-01-10 14 views
0

Я хотел бы предисловие к этому с тем, что я начал изучать Java раньше в начале этого года, поэтому я ценю всю вашу помощь! В настоящее время я работаю над программой Shadowrun (3rd Edition), которая превращает Decking в командную строку. Я бы хотел, чтобы пользователь мог вводить синий, зеленый, оранжевый или красный цвет, чтобы начать с цвета хоста, но также дать вариант «Случайный».Print String Variable изменен в инструкции 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 является Random. Я ценю любой вклад, чтобы помочь решить эту проблему - заблаговременно!

+0

Эти 'break'' выглядят проводными. – pzaenger

+2

'if (RandomHost == 0) {HostColor.equals (« Синий »);' Вторая часть - это сравнение, а не задание. – 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