2014-12-01 3 views
0

Я изучаю Java и делаю код, который конвертирует пенни в для изменения. Тем не менее, я не уверен, что нужно вводить для цикла while. Я бы использовал while(!change.equals("END")), но это невозможно сделать, потому что изменение является целым числом, так что я могу сделать?While loop for change making

class Main { 

    public static void main(String args[]) { 

     System.out.print("#Please enter the amount of change : "); 
     int change = BIO.getInt(); 

     if (change <= 500 && change >= 1) { 
      System.out.print("Amount" + "\t" + "Coins" + "\n"); 
     } 

     while (change =) { 
      int twopounds, pounds, fifty, twenty, ten, five, two, one; 

      twopounds = change/200; 
      int left = change % 200; 

      pounds = left/100; 
      left = left % 100; 

      fifty = left/50; 
      left = left % 50; 

      twenty = left/20; 
      left = left % 20; 

      ten = left/10; 
      left = left % 10; 

      five = left/5; 
      left = left % 5; 

      two = left/2; 
      left = left % 2; 

      one = left/1; 

      int nbCoins = twopounds + pounds + fifty + twenty + ten + five + two + one; 

      if (change > 500 || change < 1) { 
       System.out.print("Invalid amount " + change + "p" + "\n"); 
      } 

      if (change <= 500 && change >= 1) { 

       if (nbCoins == 1) { 
        System.out.print(change + "p " + "\t" + nbCoins + " coin "); 
       } else { 
        System.out.print(change + "p " + "\t" + nbCoins + " coins "); 
       } 

       if (twopounds > 0) { 
        System.out.print(twopounds > 1 ? twopounds + "*200p " : "200p "); 
       } 

       if (pounds > 0) { 
        System.out.print(pounds > 1 ? pounds + "*100p " : "100p "); 
       } 

       if (fifty > 0) { 
        System.out.print(fifty > 1 ? fifty + "*50p " : "50p "); 
       } 

       if (twenty > 0) { 
        System.out.print(twenty > 1 ? twenty + "*20p " : "20p "); 
       } 

       if (ten > 0) { 
        System.out.print(ten > 1 ? ten + "*10p " : "10p "); 
       } 

       if (five > 0) { 
        System.out.print(five > 1 ? five + "*5p " : "5p "); 
       } 

       if (two > 0) { 
        System.out.print(two > 1 ? two + "*2p " : "2p "); 
       } 

       if (one > 0) { 
        System.out.print(one > 1 ? one + "*1p " : "1p "); 
       } 

       System.out.print("\n"); 
      } 

      System.out.print("#Please enter the amount of change : "); 
      change = BIO.getInt(); 
     } 
    } 
} 

Спасибо :)

+0

Не можете ли вы проверить на '0'? Это похоже на законный выбор. – Stefan

ответ

0

может быть, это будет работать:

boolean flag = true; 

while(flag){ 
    //do things 
    if(condition_when_you_want_your_loop_to_stop){ 
     flag = false; 
    } 
} 
+0

Это не поможет, потому что, как ни странно, мне нужно, чтобы было возможно ввести отрицательное число – Austin

+0

ok, так что, возможно, вы можете объявить флаг за пределами цикла, значение по умолчанию которого было бы истинным, и использовать этот флаг как while и установите его в ложь внутри цикла while, когда вам будет угодно :) –

+0

Простите, ха-ха, не могли бы вы показать мне, что вы имеете в виду? Я действительно новичок в Java ... :) – Austin

1

Это зависит от того, что BIO является. Как правило, есть такие опции, как .hasNextToken(), если он перечислим. Но, не зная, что объявлена ​​эта переменная, я не могу сказать вам, каким будет ваш триггер.

+0

Это расширение, которое мой университет требует от нас использовать, я мало что знаю об этом. – Austin

+2

Возможно, вам стоит пересмотреть свой учебный материал, вы, вероятно, найдете объяснение того, как оно работает. – wvdz

+1

Это окончательный ответ. Если вы читаете кучу 'ints' из какого-то потока, вы должны иметь некоторый способ узнать, когда вы закончите. Это может быть **, если кто-то вводит нуль, но, надеюсь, поток предоставит более элегантный способ сказать «больше не осталось». –