Java 验证整数

Java 验证整数,java,methods,Java,Methods,这是一个允许用户建立高中时间表的程序。 我想在String方法中验证一个整数作为高中班级编号。这是我的方法和参数的名称 public static String addClass(String name, String day, String momentOfDay, int group){ 用户必须输入一个整数作为学校班级编号的值。数字必须根据上课日期以特定数字开头。这是一个表格,解释了需要的验证 上课日期|有效组 星期一|小组的第一个数字必须以1开始,例如10,14 星期二|小组的第一个数

这是一个允许用户建立高中时间表的程序。 我想在String方法中验证一个整数作为高中班级编号。这是我的方法和参数的名称

public static String addClass(String name, String day, String momentOfDay, int group){
用户必须输入一个整数作为学校班级编号的值。数字必须根据上课日期以特定数字开头。这是一个表格,解释了需要的验证

上课日期|有效组

星期一|小组的第一个数字必须以1开始,例如10,14

星期二|小组的第一个数字必须以2开始,例如20,22______________________________________________________________________________ 星期三|小组的第一个数字必须以3开始,例如30,31______________________________________________________________________________ 星期四|小组的第一个数字必须以4开头示例40、31______________________________________________________________________________ 星期五|小组的第一个数字必须以5开头示例50、56

以下是输出的外观粗体显示的术语是用户输入的值:

我正在使用扫描仪允许用户输入想要的整数。 我完成了课程名称、日期和当天时刻部分

但是,我很难根据表中的天数验证组整数的第一个数字。这是我的密码:

  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,要么将group的类型更改为String

是否应更改参数中的组类型?我做错了什么


我试着在中研究这些方法,但似乎弄不明白

当我复制你发布的课程表代码时,我得到了这一行的编译错误:

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声明为返回字符串,但组为int。因此,该行应更改为:

return String.valueOf(group);
在更正了那行代码之后,我又遇到了另一个编译错误,即该方法不返回值。这是addClass方法中的while循环:

如果一天是星期天,则循环终止。在while循环之后需要有一个return语句

但是,即使在修复了所有编译错误之后,由于逻辑错误,代码也无法工作。我刚刚向您展示了while循环中的一个错误。类似地,这个if语句也不能满足您的需要

if (day != "monday" || day != "tuesday" || day != "wednesday" || day != "thursday"
            || day != "friday")
除此之外,您还需要使用method equals来检查两个字符串是否相等,如果day是星期二,那么第一个条件,即day!=周一是真的。如果要确保用户输入的日期有效,则需要执行以下操作:

如果星期一、星期五|| 星期二,平等日|| 星期三,平等日|| 星期四,平等日|| 星期五,平等日{ 回归日; } 否则{ 系统输出 错误,日期必须为:星期一、星期二、星期三、星期四或星期五。。。; } 如果day、momentOfDay和group都是方法addClass的参数,为什么要求用户在方法addClass中输入这些值?另外,方法中从未使用另一个方法参数name

我认为您需要创建三个独立的方法。一个是从用户那里得到一天,另一个是得到重要的一天,还有一个是得到团体


我建议你阅读西蒙·哈勒、约格·伦哈德、莱纳斯·迪茨的书

必须从1个例子20、22开始。。。嗯。。。你确定你的意思不是必须从2开始吗?什么类型的组?如果是int,则不支持.charAt。也许先将int转换成字符串?每当你在这里发布问题时,如果有错误消息,请复制错误消息并粘贴到你的问题中。一般来说,Java在编译和运行时都会发出大量错误消息,为了帮助您,我们需要知道它是怎么说的。@markspace group是一个整数您在Java文件addClass的第192行有一个编译错误。您可以发布文件addClass.java的内容吗?day和momentOfDay以及group必须是来自同一方法的参数。并且该方法必须存储String类型中的变量。我不能创建3个单独的方法。
while (day == "monday" || day == "tuesday" || day == "wednesday" || day == "thursday"
            || day == "friday") {
if (day != "monday" || day != "tuesday" || day != "wednesday" || day != "thursday"
            || day != "friday")