Как я могу понять петли, а также как заставить их работать правильно
Я пытаюсь понять, как работают циклы, но я не могу собрать их воедино. Я работаю над программой доставки Java, и все, что я пытаюсь, не будет работать. До сих пор у меня есть, когда целые числа верны, это продолжается с программой, но я хочу, чтобы, когда я ввел недопустимое число (например, ноль или отрицательное число), чтобы запросить снова.
Scanner input = new Scanner (System.in);
int weight;
int distance;
int rate;
System.out.println("Welcome to the You Send It We Rend It Shipping Company!"); {
System.out.println ("How heavy is your package in pounds?");
weight = input.nextInt();
}
while (weight <=1 || weight >=60);{
System.out.println ("How far will you be shipping the package in miles?");
distance = input.nextInt();
}
while (distance <1);
double x = 0.00;
if (weight >= 1) x=5.01;
if (weight >=11) x=7.02;
if (weight >=21) x=9.03;
if (weight >=31) x=11.04;
if (weight >=41) x=15.00;
rate = (distance+99)/100;
System.out.printf ("Your total shipping cost for %d miles is $%s\n",distance, rate*x);
}
Кроме того, я хотел бы полностью понять, почему скорость такая...?
rate = (distance+99)/100;
2 ответа
Вы можете ввести логическое значение. Мы продолжим цикл, если для нашего логического параметра установлено значение false. Если мы сохраняем условие, мы устанавливаем логическое значение true и покидаем цикл.
boolean validWeight = false;
while(!validWeight)
{
System.out.println ("How heavy is your package in pounds?");
weight = input.nextInt();
if(weight > 1 && weight <60)
validWeight = true;
}
Также осторожно с этой строкой:
while (distance <1);
что эквивалентно
while(distance < 1)
{
//do nothing
}
если расстояние установлено на единицу меньше единицы, вы будете в бесконечном цикле.
Та же проблема с
while (weight <=1 || weight >=60);
Ввод ";" сразу после условного высказывания - это то же самое, что
{
//do nothing
}
Который только вызовет вам много проблем
Например, если вы хотите, чтобы пользователь ввел правильный вес, вы можете использовать следующий цикл:
int weight = 0;
Scanner input = new Scanner(System.in);
do {
System.out.println("How heavy is your package in pounds?");
weight = input.nextInt();
if (weight <= 0) {
System.out.println("Weight should be a positive integer, please enter again!");
}
} while (weight <= 0);