例如,如果我输入26/2/1996
,它会起作用,但如果我输入26/3/1996
,我什么也得不到。它会显示任何日期,只要M = 2
,我不明白为什么。我尝试使用Integer.toString(int)
,我得到了相同的结果,这是我的代码。
import java.util.Scanner;
public class DEPURANDO {
static Scanner input = new Scanner(System.in);
static String DMY () {
String F = "";
boolean salida;
int D, M, Y;
do {
salida = true;
System.out.println("");
System.out.println("DAY: ");
D=input.nextInt();
input.nextLine();
System.out.println("MONTH: ");
M=input.nextInt();
input.nextLine();
System.out.println("YEAR: ");
Y=input.nextInt();
input.nextLine();
if ( (Y <= 0) || (M <= 0) || (D <= 0) || (M > 12) || (D > 31) ) {
System.out.println("Error");
salida = false;
}
else {
if (M == 2 && D > 29) {
System.out.println("Error");
salida = false;
}
else if (M != 2) {
if ( ((M % 2) == 0) && (D > 30) && (M < 8) ) {
System.out.println("Error");
salida = false;
}
if ( ((M % 2) != 0) && (D > 30) && (M >= 8) ) {
System.out.println("Error");
salida = false;
}
}
else {
F = String.valueOf(D);
F += "/";
F += String.valueOf(M);
F += "/";
F += String.valueOf(Y);
}
}
} while (salida != true);
System.out.println("Look at the date "+F);
return F;
}
static char A = 'A';
public static void main(String[] args) {
do {
DMY();
} while(A != 'B');
}
}
答案 0 :(得分:0)
如果IPM.Note
不是Namespace.GetItemFromID
,则以下if-elseif-else
语句会使您错误或没有任何反应。
M
2
中的代码应位于if (M == 2 && D > 29) {
// ...
} else if (M != 2) { // here's the culprit
// ...
} else {
// ...
}
部分,您应该同时删除else if (M != 2)
语句。类似于以下内容:
else
另外请注意,最好使用else if (M != 2)
而不是将所有字符串附加到if (M == 2 && D > 29) {
System.out.println("Error");
salida = false;
}
else {
if ( ((M % 2) == 0) && (D > 30) && (M < 8) ) {
System.out.println("Error");
salida = false;
}
if ( ((M % 2) != 0) && (D > 30) && (M >= 8) ) {
System.out.println("Error");
salida = false;
}
if (salida) {
F = String.valueOf(D);
F += "/";
F += String.valueOf(M);
F += "/";
F += String.valueOf(Y);
}
}
。例如:
String.format(...)