2014-11-15 5 views
0

Я застрял на этот вопрос в то время как петли, был бы рад, если кто-то может определить, где я неправильно :)Java dicegolfgame - whileloop

игра в гольф Написать программу, которая использует время цикла, чтобы играть в кости игра в гольф. Расстояние до отверстия начинается со 100 м. Человек неоднократно выбирает, какой клуб использовать. Различные варианты выбора соответствуют различным односторонним виртуальным «кубикам» для рулона, т. Е. Дают случайное число. Если они выбирают клуб 1 (клюшка), они набрасывают число от 0 до 5, представляя собой удаленный пробег. Если они выбирают клуб 2 (для качки), они свертывают число от 0 до 30. Если они выберут клуб 3 (железо), они перевернут число от 0 до 150. После каждого броска это число вычитается с расстояния до отверстия (с отрицательными расстояниями делается положительным для следующего раунда). Они продолжают катиться, пока не достигнут ровно 0. Когда они делают, количество напечатанных снимков напечатано.

The following shows an example run of the program: 
Distance to hole 100m. Which club (1-putting, 2-pitching or 3-iron) 3 
You hit it...120m 
Distance to hole 20m. Which club (1-putting, 2-pitching or 3-iron) 2 
You hit it...16m 
Distance to hole 4m. Which club (1-putting, 2-pitching or 3-iron) 1 
You hit it...1m 
Distance to hole 3m. Which club (1-putting, 2-pitching or 3-iron) 1 
You hit it...3m 
Congratulations. You took 4 shots. 

Я новичок в Java, ниже того, что мне удалось сделать, но показывает ошибку: в то время как (! Input.equals ("1" || "2" || "3")) , Я не уверен, правильно ли это сделано и потрачено на это, было бы рада, если бы кто-то мог помочь в решении проблемы вопроса :) Большое спасибо.

public static void dicegolfgame(String[] args) 
{ 

String input = ""; 
int difference = 0; 
int newdistance = 0; 
int distance = 0; 
int i = 0; 

while (input.equals ("1" || "2" || "3")) 
{ 
Random roll2 = new Random(); 
distance = roll2.nextInt(100); 

input = JOptionPane.showInputDialog ("distance to hole " + distance + " Which club (1-putting), 2-(pitching) or 3-iron"); 

while (difference > 0 && difference < 0) 

if (input.equals ("1")) 
{ 
Random roll = new Random(); 
newdistance = roll.nextInt(5); 
i = i+1; 
JOptionPane.showMessageDialog(null, "you hit ..." + newdistance + "m"); 
difference = distance - newdistance; 
} 

else if (input.equals ("2")) 
{ 
Random roll = new Random(); 
newdistance = roll.nextInt(30); 
i = i+1; 
JOptionPane.showMessageDialog(null, "you hit ..." + newdistance + "m"); 
difference = distance - newdistance; 
} 

else if (input.equals ("3")) 
{ 
Random roll = new Random(); 
newdistance = roll.nextInt(150); 
i = i+1; 
JOptionPane.showMessageDialog(null, "you hit ..." + newdistance + "m"); 
difference = distance - newdistance; 
} 

if (difference == 0) 
{ 
break; 
JOptionPane.showMessageDialog(null, "Congratulations, you took" + i + "shots."); 
} 
+1

while (разница> 0 && разница <0) - как это возможно? – NerosE

+0

Я не уверен, поскольку я сказал, что я новичок в этом, но вопросы, требующие продолжения цикла, даже если разница отрицательная, поэтому я думал, что разница должна быть сохранена> 0 и <0. Наверное, я ошибаюсь:/ – Arpit

ответ

0

Это расстояние до отверстия, которое определяет, имеет ли игрок в гольф, чтобы снова или не стрелять - так что должно быть в то время цикла. Я добавил несколько комментариев в код:

String input = ""; 
int distance = 100; 
int numberOfHits = 0; 
int hit = 0; 

while (distance > 0) { 
    numberOfHits++;//increasing the nuber of hits 
    input = JOptionPane.showInputDialog("distance to hole " + distance + " Which club (1-putting), 2-(pitching) or 3-iron"); 
    switch (input) {//if you don't know switch you coukd use if-else 
     case "1": 
      Random roll = new Random(); 
      hit = roll.nextInt(6);//a random int netween 0-5 
      JOptionPane.showMessageDialog(null, "you hit ..." + hit + "m"); 
      distance -= hit;//sets the new distance to the old distance subtracted the hit 
      distance = Math.abs(distance);//if distance is negative make it positive 
      break; 
     case "2": 
      roll = new Random(); 
      hit = roll.nextInt(31); 
      JOptionPane.showMessageDialog(null, "you hit ..." + hit + "m"); 
      distance -= hit; 
      distance = Math.abs(distance); 
      break; 
     case "3": 
      roll = new Random(); 
      hit = roll.nextInt(151); 
      JOptionPane.showMessageDialog(null, "you hit ..." + hit + "m"); 
      distance -= hit; 
      distance = Math.abs(distance); 
      break; 
    } 
} 
//when we are out of the loop the distance is zero 
JOptionPane.showMessageDialog(null, "Congratulations, you took " + numberOfHits + " shots."); 
+0

Большое спасибо за помощь !! : D Это сделало его очень легким для понимания, теперь это имеет больше смысла. :) @NerosE – Arpit

Смежные вопросы