【发布时间】:2014-04-11 02:33:50
【问题描述】:
我正在尝试创建两个异常,一个在月份编号大于 12 或小于 1 时抛出,另一个在月份名称无效时抛出。我以为我包含了所有必要的步骤(我不擅长例外),但我的主课仍然无法正常工作。关于我做错了什么的任何见解?
public class Month {
private int monthNumber;
/**
* Creates a new month set to January
*/
public Month(){
monthNumber = 1;
}
/**
* Creates a month set to the month number provided by the user
* @param m the number of the month
*/
public Month(int m) throws MonthsNumberException{
if (m<1 || m>12){
throw new MonthsNumberException("Number has to be greater than 1 and less than 12");
}else{
monthNumber = m;
}
}
/**
* Creates a month based on the string name provided
* @param m String values for the name of the month
*/
public Month(String m) throws MonthsNameException{
switch(m){
case "January":
monthNumber = 1;
break;
case "February":
monthNumber = 2;
break;
case "March":
monthNumber = 3;
break;
case "April":
monthNumber = 4;
break;
case "May":
monthNumber = 5;
break;
case "June":
monthNumber = 6;
break;
case "July":
monthNumber = 7;
break;
case "August":
monthNumber = 8;
break;
case "September":
monthNumber = 9;
break;
case "October":
monthNumber = 10;
break;
case "November":
monthNumber = 11;
break;
case "December":
monthNumber = 12;
break;
default:
throw new MonthsNameException("Invalid month name: " + m);
}
}
/**
* changes the month to the number provided
* @param m the number of the month
*/
public void setMonthNumber(int m) throws MonthsNumberException{
if (m<1 || m>12){
throw new MonthsNumberException("Number has to be greater than 1 and less than 12");
}else{
monthNumber = m;
}
}
/**
* returns the number of the month
* @return the number of the month
*/
public int getMonthNumber(){
return monthNumber;
}
/**
* returns the name of the month
* @return the name of the month
*/
public String getMonthName(){
String month="";
switch(monthNumber){
case 1:
month = "January";
break;
case 2:
month = "February";
break;
case 3:
month = "March";
break;
case 4:
month = "April";
break;
case 5:
month = "May";
break;
case 6:
month = "June";
break;
case 7:
month = "July";
break;
case 8:
month = "August";
break;
case 9:
month = "September";
break;
case 10:
month = "October";
break;
case 11:
month = "November";
break;
case 12:
month = "December";
break;
}
return month;
}
/**
* returns a string representation of the month
* @return the name of the month
*/
public String toString(){
return getMonthName();
}
/**
* if the two items are the same returns true
* @param m the month object to compare
* @return true if they are the same, false if not
*/
public boolean equals(Month m){
if (m.getMonthNumber() == this.getMonthNumber()){
return true;
}else{
return false;
}
}
/**
* If this calling item is after the month object passed as argument returns true
* @param m the month object
* @return true if calling object greater, false of argument greater
*/
public boolean greaterThan(Month m){
if (this.getMonthNumber()>m.getMonthNumber()){
return true;
}else{
return false;
}
}
/**
* If this calling item is before the month object passed as argument returns true
* @param m the month object
* @return true if calling object less than, false of argument less than
*/
public boolean lessThan(Month m){
if (this.getMonthNumber()<m.getMonthNumber()){
return true;
}else{
return false;
}
}
class MonthsNumberException extends Exception
{
public MonthsNumberException(String message)
{
super(message);
}
}
class MonthsNameException extends Exception
{
public MonthsNameException(String message)
{
super(message);
}
}
}
import javax.swing.*;
public class MonthDemo {
/**
* @param args the command line arguments
*/
public static void main(String[] args) {
String response = JOptionPane.showInputDialog(null, "Please enter a month number");
int mNumber = Integer.parseInt(response);
Month m1 = new Month(mNumber);
JOptionPane.showMessageDialog(null, m1.toString());
response = JOptionPane.showInputDialog(null, "Please enter a month name");
Month m2 = new Month(response);
JOptionPane.showMessageDialog(null, m2.toString());
}
}
【问题讨论】:
-
你必须定义“不工作”
-
关于错误是什么的任何提示?错误信息?堆栈跟踪?一种行为?
-
您能告诉我们确切哪些错误吗?
-
@user2288575 因此,您尚未向我们展示的方法中的一行代码会为您提供一条“弯曲的红线”。我 1988 年的 vi 副本没有显示弯曲的红线,所以我不知道你在说什么。也许你有一个新奇的 IDES,问题是那个 IDE 中波浪形的红线是什么意思?
-
@user2288575 你不能尝试一个更简单的程序来确保你真正理解如何至少以基本的方式使用异常吗?而且,我根本无法理解为什么你不能简单地给出你所面临的错误信息。为什么有人需要复制您的代码并自己找出来?