Программа аренды Java для начинающих

Я новичок в программировании. Пытаюсь составить программу для проката велосипедов. И проблема в том, что есть два тарифа (1 и 2) на определенное время.

Тариф 1: с 00:00 до 07:00 и с 17:00 до 24:00. (1 $) Тариф 2: с 07:00 до 17:00. (2 $) Мне нужно использовать сканер, поэтому я пишу два числа, и он должен рассчитать мне количество часов в тарифах 1 и 2, а также общую стоимость. Проблема в том, что я понятия не имею, как написать программу, чтобы она определяла, сколько часов в том или ином тарифе.

Программа должна работать следующим образом:

  1. Вход 1
  2. Вход 2
  3. Подсчитайте количество часов в тарифах 1 и 2 и укажите общее количество.
  4. Назовите общую цену.

Итак, вот код:

import java.util.Scanner;

public class Bike {

public static void main(String[] args) {

    Scanner clavier = new Scanner(System.in);
    System.out.print("Give the starting hour : ");
    int start = clavier.nextInt();
    System.out.print("Give the ending hour : ");
    int finish = clavier.nextInt();

    if (start < 0 || start > 24) { 
    System.out.println("Hours must be within 0 and 24 !");
    }
    if (start == finish) {
    System.out.println("Strange, you didn't take it long enough !");
    }
    if (start >= 24 || start > finish) {
    System.out.println("Strange, the starting hour is after the end ...");
    }
    int total = finish - start;
    if (total > 0) {
    System.out.println("You have rented the bike for " + total + " hours.");
    }
//This is where it becomes complicated.

    if ((start >= 0 && start < 7)||(start >= 17 && start <= 23)) {
        System.out.println("Amount of hours in Tariff 1 is : " + ((7 - start) +(finish - 17)));
    } else {
        System.out.println("Amount of hours in Tariff 2 is : "
        System.out.print("Total amount to pay is : ");
        System.out.println(" dollars.");
        {

        }

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

Michael 06.07.2018 13:38

Я его отредактировал, и как раз перед этим закрыли.

Shylin Vlad 06.07.2018 13:38

Это не совсем то же самое, но все же «я понятия не имею, как написать программу» не является вопросом и здесь не рассматривается по теме, извините. См. Справочную страницу Как мне задать хороший вопрос?

Michael 06.07.2018 13:40

Добро пожаловать в stackoverflow.com. Вам также необходимо проверить финиш, где происходит финиш, будь то граница 1-го тарифа или второго тарифа. Не думайте, что это проблема кодирования, и для этого нужна логика, а не синтаксис. Думаю, если хорошенько подумать, то можно в этом разобраться. поскольку этой программе не потребуется какая-либо библиотека, специфичная для Java, поэтому сосредоточьтесь на логике и используйте также переменную времени окончания.

Sagar Kharab 06.07.2018 13:42

Проблема в том, что я пробовал. И до сих пор не знаю, как это правильно делать.

Shylin Vlad 06.07.2018 13:44
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
5
5
1 232
1

Ответы 1

Хорошо, вы новичок в программировании, поэтому я постараюсь сделать это проще. Проблема здесь не в синтаксисе или каком-то секрете в java, а просто в отсутствии логики. Из того, что вы написали, я вижу, что вы либо в средней школе, либо только начинаете программировать, либо кто-то только начинает учиться программировать.

Поэтому я постараюсь сделать это простым и не давать вам слишком много подсказок.

Тариф 2 не может быть только в else. Я бы порекомендовал создать 2 целых, тарифOne и тарифTwo (или любые другие имена, которые вам нравятся), сделайте их = 0. Вычислите их, используя некоторые операторы if. Затем, когда у вас есть значения, используйте их в System.out.

Это хорошо, потому что вы можете просто добавить все, что хотите, в целые числа, и у вас всегда будут их значения.

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

Спасибо за ответ! Я попробую это.

Shylin Vlad 06.07.2018 14:13

Другие вопросы по теме