мой код ничего не печатает

#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;
       }
  

Вот хороший пример операторов switch в Java