我无法让我的开关工作.我得到一个无法编译的源代码Date.java:75.此外,当程序返回结果时 - 我希望它还返回MONTH NAME DD,YYYY以及我已经拥有的MM/DD/YYYY.如果你能指出我正确的方向,我会很感激.
import java.util.Calendar;
import java.util.GregorianCalendar;
import java.util.Scanner;
public class Date {
private GregorianCalendar date = null;
private String[] months = new String[]{ "january", "february", "march", "april", "may",
"june", "july", "august", "september", "october", "november", "december" };
public Date(int month, int day, int year) {
date = new GregorianCalendar(year, month-1, day);
}
public Date(String month, int day, int year) {
date = new GregorianCalendar(year, this.getMonth(month), day);
}
public Date(int dayOfYear, int year) {
date = new GregorianCalendar();
date.set(Calendar.DAY_OF_YEAR, dayOfYear);
date.set(Calendar.YEAR, year);
}
private int getMonth(String month) {
for (int i=0; i<months.length; ++i)
if (month.toLowerCase().equals(months)) //equals(months))
return i;
return 0;
}
public String toString() {
return date.get(Calendar.MONTH)+1 + "-" + date.get(Calendar.DATE) + "-" + date.get(Calendar.YEAR);
}
public static void main(String[] args) {
int mo;
int dy;
int yr;
String moo; // Month name string
boolean wrongInput = false;
do {
Scanner input = new Scanner( System.in ); // scanner to read input
wrongInput = false;
int menu = input.nextInt(); // menu selection
System.out.printf( "Enter 1 for format: MM/DD/YYYY \n");
System.out.printf( "Enter 2 for format: Month DD,YYYY \n");
System.out.printf( "Enter 3 to exit \n");
System.out.printf( "Choice:");
switch(menu)
{
case '1' : // MM/DD/YYYY UI
System.out.printf( "Enter Month (1-12): ");
mo = input.nextInt();
System.out.printf( "Enter Day of Month: ");
dy = input.nextInt();
System.out.printf( "Enter Year: ");
yr = input.nextInt();
Date a = new Date(mo, dy, yr); //chew
System.out.println(a); //spit
break;
case '2' : // Month DD,YYYY UI
System.out.printf( "Enter Month name: ");
moo = input.next();
System.out.printf( "Enter Day of Month: ");
dy = input.nextInt();
System.out.printf( "Enter Year: ");
yr = input.nextInt();
Date b = new Date(moo, dy, yr); //chew
System.out.println(b); //spit
break;
case '3' : // EOP
System.exit(0);
break;
default:
System.out.println("Invalid selection.");
wrongInput = true;
break;
}
while(wrongInput);
}
Run Code Online (Sandbox Code Playgroud)
您正在传递整数并检查字符.1是int同时'1'是字符在Java中.
在您的代码menu中int并非char如此,您的情况应该是,case 1:而不是case '1':
所以改变你的 switch
switch(menu){
case 1:
//Your code
break;
case 2:
//Your code
break;
//..And so on
}
Run Code Online (Sandbox Code Playgroud)
眼下ASCII字符值'1','2'..与比较int值传递为menu这显然不会是平等作为ASCII焦炭的价值'1'是81同时82进行'2',因此在这种情况下完全没有用处.
| 归档时间: |
|
| 查看次数: |
672 次 |
| 最近记录: |