2015-11-14 5 views
2

Я пытаюсь создать программу, которая вводит значения монет, чтобы давать билеты, но, похоже, она не попадает в первый момент, а когда я запускаю ее в первую очередь, Не принимайте парные (например, 0,1 или 0,5), и независимо от того, какой номер вы вводите, он говорит: «Вот ваш билет и заканчивается! что не так с кодом?Программа, похоже, не вводится, пока

import acm.program.*; 

public class tickets extends ConsoleProgram { 
    public static double eisitirio = 1.2; 
    public void run(){ 
    double nomisma=readInt("Insert coins and then press 0: "); 
    boolean synthiki=false; 
    double poso=0; 
    while (synthiki=false){ 
     while (nomisma != 0){ 
      if ((nomisma==0.1)||(nomisma==0.2)||(nomisma==0.5)||(nomisma==1)||(nomisma==2)||(nomisma==5)){ 
      poso=poso+nomisma; 
      }else { 
       System.out.println("You did not insert a supported coin, please insert another one"); 
      } 
      nomisma=readInt("Insert coins and then press 0: "); 
     } 
     if (poso < eisitirio){ 
      System.out.println("You did not insert enough money, please insert more coins"); 
     }else { 
      synthiki=true; 
     } 
    } 
    println("Here is your ticket"); 
    poso=poso-eisitirio; 
    if ((poso/5) > 0){ 
     println("You have change: 5 euros"); 
     poso = poso-5; 
    } 
    if ((poso/2) > 0){ 
     println("You have change: 2 euros"); 
     poso = poso-2; 
    } 
    if ((poso/1) > 0){ 
     println("You have change: 1 euros"); 
     poso = poso-1; 
    } 
    if ((poso/0.5) > 0){ 
     println("You have change: 50 cents"); 
     poso = poso-0.5; 
    } 
    if ((poso/0.2) > 0){ 
     println("You have change: 20 cents"); 
     poso = poso-0.2; 
    } 
    if ((poso/0.1) > 0){ 
     println("You have change: 10 cents"); 
     poso=poso-0.1; 
    } 
    } 

} 
+0

Попробуйте использовать '==' вместо '='. Один равен средству присваивания, два равны среднему значению для равенства. –

ответ

1

Вы должны использовать "==" для сравнения, а не "=" (назначение). Изменение

while (synthiki=false) 

в

while (synthiki == false) 
1

Вы условие,

while (synthiki=false){...} 

должно быть,

while (!synthiki){...} 

Первое условие назначает false к synthiki. Так как synthiki является boolean, вы можете использовать переменную непосредственно внутри while() {...}. Также, если вам нужно было проверить значение synthiki, используйте == вместо =.

Как: while(synthiki == false) {...}

1

= является оператором присваивания. Он присваивает значение выражения правой стороны левой стороне переменной и возвращает ее. Если вы хотите проверить на равенство, вы должны использовать == оператор:

while (synthiki == false) { 

Или еще лучше, так как это логическая переменная, не сравнить его значение с буквальным, но оценить его непосредственно:

while (!synthiki) { 
Смежные вопросы