Проблема с умножением 10 на число, меньшее или равное 40

Код для моего проекта:

    import java.util.*;

public class SalaryA
{
    public static void main (String[] args)
    {
        Scanner console = new Scanner(System.in);

        int week = 1;
        int totalNumberOfWeeks = 5;

        double totalCost = 0;

        while (week <= totalNumberOfWeeks)
        {
            double totalNumberOfHours;
            double total = 0;
            String weekStr = "";

            switch (week)
            {
                case 1 : weekStr = "Week 1"; break;
                case 2 : weekStr = "Week 2"; break;
                case 3 : weekStr = "Week 3"; break;
                case 4 : weekStr = "Week 4"; break;
                case 5 : weekStr = "Week 5"; break;
                default : weekStr = "Invalid"; break;
            }

            System.out.println("Input Number of Hours worked for "+weekStr+": ");
            totalNumberOfHours = console.nextDouble();

            if (totalNumberOfHours <= 40)
            {
                total = totalNumberOfHours * 10;
            } else if (totalNumberOfHours > 40);
            {
                total = 40 * 10 + (totalNumberOfHours - 40) * 15;
            }

            totalCost += total;
            week ++;

        }

        System.out.println("Total salary is: "+totalCost+"
");
    }
}

Если я устанавливаю число ниже или равное 40 с примером 15, который должен возвращаться как 150, но возвращается только как 25. Я установил цикл while, чтобы сделать это 5 раз, и это дает мне 125, но ответ должен быть давать мне 750. Заявление else if работает вполне нормально, хотя это то, что меня смущает. Я проверил это со многими числами, и это только влияет ниже 41 (40-1). Все остальное работает отлично.

У кого-нибудь есть решение для этого?

Всего 1 ответ


Одна точка с запятой добавляется в ваш код после else if (totalNumberOfHours > 40);

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

package programs;

import java.util.Scanner;

class SalaryA{

    public static void main(String[] args) {
        Scanner console = new Scanner(System.in);
        int week = 1;
        int totalNumberOfWeeks = 5;
        double totalCost = 0;
        while (week <= totalNumberOfWeeks) {
            double totalNumberOfHours;
            double total = 0;
            String weekStr = "";

            switch (week) {
            case 1:
                weekStr = "Week 1";
                break;
            case 2:
                weekStr = "Week 2";
                break;
            case 3:
                weekStr = "Week 3";
                break;
            case 4:
                weekStr = "Week 4";
                break;
            case 5:
                weekStr = "Week 5";
                break;
            default:
                weekStr = "Invalid";
                break;
            }

            System.out.println("Input Number of Hours worked for " + weekStr + ": ");
            totalNumberOfHours = console.nextDouble();

            if (totalNumberOfHours <= 40) {
                total = totalNumberOfHours * 10;
            } else if (totalNumberOfHours > 40) {
                total = 40 * 10 + (totalNumberOfHours - 40) * 15;
            }
            totalCost += total;
            week++;
        }
        System.out.println("Total salary is: " + totalCost + "
");
    }
}

Есть идеи?

10000