Проверить целое число - PullRequest
2 голосов
/ 14 марта 2020

Это программа, которая позволяет пользователю строить расписание старших классов. Я хотел бы проверить целое число как номер класса средней школы в моем методе String. Вот название моего метода с параметрами.

public static String addClass(String name, String day, String momentOfDay, int group){

Пользователь должен указать целое число в качестве значения номера школьного класса. Номер должен начинаться с указанного c номера в зависимости от дня занятий. Вот таблица, которая объясняет требуемую проверку

Day of Class | Valid Group


Понедельник | Первый номер группы должен начинаться с 1 (пример 10, 14 ...)


Вторник | Первый номер группы должен начинаться с 2 (пример 20, 22 ...) ______________________________________________________________________________ среда | Первый номер группы должен начинаться с 3 (пример 30, 31 ...) ______________________________________________________________________________ Четверг | Первый номер группы должен начинаться с 4 (пример 40, 31 ...) ______________________________________________________________________________ Пятница | Первый номер группы должен начинаться с 5 (пример 50, 56 ...)

Вот как должен выглядеть вывод (термины, выделенные жирным шрифтом, представляют собой введенные пользователем значения):

**********************
ADD CLASS TO SCHEDULE 
**********************

Name of class : **INF1120**
Day of class : **Monday**
Moment of the day of the class : **PM**
Group of class : **12**

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

Однако мне трудно проверить первое число целого числа группы согласно дням в таблице. Вот мой код:

  import java.util.Scanner;

public class schedule {

    public static String addClass(String name, String day, String momentOfDay, int group) {
 Scanner keyboard = new Scanner(System.in);

System.out.print("day of class: ");

        day = keyboard.nextLine();

        if( day != "monday" || day != "tuesday" || day != "wednesday"
                || day != "thursday" || day != "friday" ) {
            System.out.print("Error, the day has to be either : monday, tuesday, wednesday, thursday, or friday...");
        }   
        else if(day = "monday" || day = "tuesday" || day = "wednesday"
                || day = "thursday" || day = "friday" ) {

        return day;
        }    


System.out.print("Moment of day: ");

            momentOfDay = keyboard.nextLine();

            if(momentOfDay != "am" || momentOfDay != "pm" || momentOfDay != "night") {
                System.out.print("Error, the moment of the day has to be : am, pm, or evening...");

            }
            else if(momentOfDay == "am" || momentOfDay == "pm" || momentOfDay == "evening") {

                return momentOfDay;
            }
                System.out.print("Class group");

                group = keyboard.nextInt();

                while(day == "monday" || day == "tuesday" || day == "wednesday"
                || day == "thursday" || day == "friday"){

                   if (String.valueOf(Math.abs(int(group)).charAt(0) == 1){
                           return group;  
             }    
                else {
                       System.out.print("Error, group number is invalid");
         }   
    }
}
}

Однако он не компилируется, потому что возвращаемое значение не может быть int, которое требуется. Вот ошибка.

   Type mismatch: cannot convert from int to String

Он просит меня либо изменить тип возвращаемого значения на int, либо изменить тип группы на String.

Должен ли я изменить тип группы в параметре? Что я сделал не так?

Я пытался исследовать методы в этой ссылке , но не могу понять это.

1 Ответ

0 голосов
/ 15 марта 2020

Когда я скопировал код класса schedule, который вы опубликовали, я получил ошибку компиляции для этой строки:

if (String.valueOf(Math.abs(int(group)).charAt(0) == 1){

int должен быть удален. group - это параметр метода addClass(), и это int. Поэтому строка кода должна быть:

if (String.valueOf(Math.abs(group)).charAt(0) == 1){

После исправления этой строки, следующая за ней строка вызывает ошибку компиляции. Эта строка:

return group;

Метод addClass() объявлен как возвращающий String, но group является int. Поэтому эту строку следует изменить на:

return String.valueOf(group);

После исправления этой строки кода я получил еще одну ошибку компиляции, а именно то, что метод не возвращает значение. Это while l oop в методе addClass():

while (day == "monday" || day == "tuesday" || day == "wednesday" || day == "thursday"
            || day == "friday") {

Если day означает «воскресенье», то l oop завершается. После этого должен быть оператор return while l oop.

Но даже после исправления всех ошибок компиляции ваш код не будет работать из-за ошибок logi c. Я только что показал вам одну из этих ошибок в while l oop. Точно так же этот оператор if не будет делать то, что вы хотите.

if (day != "monday" || day != "tuesday" || day != "wednesday" || day != "thursday"
            || day != "friday")

Помимо того факта, что вам нужно использовать метод equals(), чтобы проверить, равны ли две строки, если day - "вторник" тогда первое условие, а именно day != "monday", выполняется. Если вы хотите убедиться, что пользователь вводит правильный день, вам нужно следующее:

if ("monday".equals(day) ||
    "tuesday".equals(day) ||
    "wednesday".equals(day) ||
    "thursday".equals(day) ||
    "friday".equals(day)) {
    return day;
}
else {
    System.out.print(
                    "Error, the day has to be either : monday, tuesday, wednesday, thursday, or friday...");
}

Если day и momentOfDay и group - все параметры метода addClass(), почему Вы просите пользователя ввести эти значения в методе addClass()? Также другой параметр метода, name, никогда не используется в методе.

Я думаю, вам нужно создать три отдельных метода. Один для получения day от пользователя, другой для получения momentOfDay и еще один для получения group.

Я предлагаю вам прочитать книгу Java по сравнению Саймон Харрер, Йорг Ленхард, Линус Дитц

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...