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