#java #if-statement
#java #if-оператор
Вопрос:
Привет, итак, у меня есть код, разработанный для предоставления наилучшей цены на аренду автомобиля с еженедельными и ежедневными ценами в качестве констант. Код примет цвет, тип аренды и количество дней, но ничего не выведет. Я что-то упустил?
import java.util.*;
import java.util.Scanner;
public class lab3
{
public static final char E = 'E';
public static final int ZERO = 0;
public static final double ECONOMY_DAILY = 25.5;
public static final double FULL_DAILY = 39.4;
public static final double ECONOMY_WEEKLY = 120.5;
public static final double FULL_WEEKLY = 216.25;
public static void main (String[] args)
{
Scanner Keyboard = new Scanner(System.in);
Locale locale = Locale.getDefault();
System.out.println("Enter the color of the vehicle:");
String color = Keyboard.next();
System.out.println ("Economy or Full:");
String Type = Keyboard.next();
char FirstTypeLetter = Type.toUpperCase()
.charAt(0);
System.out.println("For how many days?");
int Days = Keyboard.nextInt();
int Weeks = Days/7;
int DaysLeftover = Days%7;
switch (FirstTypeLetter)
{
case 'E':
double Rate1 = Weeks * ECONOMY_WEEKLY;
double Rate2 = (Weeks * ECONOMY_WEEKLY) (Days * ECONOMY_DAILY);
double Rate3 = (Days * ECONOMY_DAILY);
if ((Rate1 > Rate2)amp;(Rate1>Rate3))
{
System.out.println("This is the best rate for a" " " color " " Type " vehicle for" " " Days "days:" Rate1);
if ((Rate2>Rate1)amp;(Rate2>Rate3))
{
System.out.println("This is the best rate for a" " " color " " Type " vehicle for" " " Days "days:" Rate2);
}
else if ((Rate3>Rate2) amp; (Rate3>Rate1))
{
System.out.println("This is the best rate for a" " " color " " Type " vehicle for" " " Days "days:" Rate3);
switch (FirstTypeLetter)
{
case 'F':
double FullRate1 = Weeks * FULL_WEEKLY;
double FullRate2 = (Weeks * FULL_WEEKLY) (Days * FULL_DAILY);
double FullRate3 = (Days * ECONOMY_DAILY);
if ((Rate1 > Rate2) amp; (Rate1 > Rate3))
{
System.out.println("This is the best rate for a" " " color " " Type " vehicle for" " " Days "days:" FullRate1);
}
if ((FullRate2 > FullRate1) amp; (FullRate2 > FullRate3))
{
System.out.println("This is the best rate for a" " " color " " Type " vehicle for" " " Days "days:" FullRate2);
}
else if ((FullRate3 > FullRate1) amp; (FullRate3 > FullRate2))
{
System.out.println("This is the best rate for a" " " color " " Type " vehicle for" " " Days "days:" FullRate3);
}
break;
default:
System.out.println("Try Again!");
}
}
Комментарии:
1. Я предлагаю вам использовать опцию форматирования кода в вашей IDE, чтобы помочь вам увидеть уровни вложенности в вашем коде. Если вы используете обычный текстовый редактор, вам следует изучить соглашения о форматировании, чтобы вы могли форматировать свой код, чтобы вам было легче следить за происходящим.
2. Вам также следует научиться использовать отладчик, чтобы вы могли пошагово просматривать свой код и просматривать значения переменных, чтобы выяснить, что на самом деле делает ваш код.
Ответ №1:
Ваш код не имеет смысла.
В вашем case 'E'
у вас есть другой параметр switch, который использует те же переменные, а затем проверяет его на case 'F'
Также при использовании if
statment, который вы используете amp;
вместо amp;amp;
Поскольку у вас есть только два случая E
, и F
я предлагаю вам использовать простой if
statment
if (FirstTypeLetter == 'E' amp;amp; Rate1 > Rate2 amp;amp; Rate1>Rate3)
{
}
Комментарии:
1. Хорошо, я снял второй оператор switch, но он выдает ошибку потерянного случая
2. Пожалуйста, прочтите мой обновленный ответ. Одна большая ошибка — это ваши ошибочные
amp;amp;
и НЕamp;
Ответ №2:
Проблема в том, что вы неправильно отформатировали оператор switch. Это должно выглядеть так:
double Rate1 = Weeks * ECONOMY_WEEKLY;
double Rate2 = (Weeks * ECONOMY_WEEKLY) (Days * ECONOMY_DAILY);
double Rate3 = (Days * ECONOMY_DAILY);
switch (FirstTypeLetter) {
case 'E':
if ((Rate1 > Rate2) amp; (Rate1 > Rate3)) {
System.out.println("This is the best rate for a" " " color " " Type " vehicle for" " " Days "days:" Rate1);
}
else if ((Rate2 > Rate1) amp; (Rate2 > Rate3)){
System.out.println("This is the best rate for a" " " color " " Type " vehicle for" " " Days "days:" Rate2);
}
else if ((Rate3 > Rate2) amp; (Rate3 > Rate1)) {
System.out.println("This is the best rate for a" " " color " " Type " vehicle for" " " Days "days:" Rate3);
}
break;
case 'F':
double FullRate1 = Weeks * FULL_WEEKLY;
double FullRate2 = (Weeks * FULL_WEEKLY) (Days * FULL_DAILY);
double FullRate3 = (Days * ECONOMY_DAILY);
if ((Rate1 > Rate2) amp; (Rate1 > Rate3)) {
System.out.println("This is the best rate for a" " " color " " Type " vehicle for" " " Days "days:" FullRate1);
}
else if ((FullRate2 > FullRate1) amp; (FullRate2 > FullRate3)) {
System.out.println("This is the best rate for a" " " color " " Type " vehicle for" " " Days "days:" FullRate2);
}
else if ((FullRate3 > FullRate1) amp; (FullRate3 > FullRate2)) {
System.out.println("This is the best rate for a" " " color " " Type " vehicle for" " " Days "days:" FullRate3);
}
break;
default:
System.out.println("Try Again!");
break;
}