2011-10-26 4 views
0
import java.util.Scanner; 
import java.util.InputMismatchException; 

public class backup { 
public static int t1; 
public static int t2; 
public static int x; 
public static int y1; 
public static int m1; 
public static int d1; 
public static int y2; 
public static int m2; 
public static int d2; 

public static void date1() { 

     Scanner scanner = new Scanner(System.in); 
     try { 
      System.out.println("Please enter the first date "); 
      System.out.println("Please enter the year: "); 
      y1 = scanner.nextInt(); 

      System.out.println("Please enter the month: "); 
      m1 = scanner.nextInt(); 

      System.out.println("Please enter the day: "); 
      d1 = scanner.nextInt(); 
     } catch (InputMismatchException inputMismatchException) 
     { 
      scanner.nextLine(); 
      System.err.println("You must enter intergers. Please try again. "); } 
     } 
public static void caldate1() { 
    int j = 693502; 
    if (t1 > j) { 

     if (m1 == 1 + 3 + 5 + 7 + 8 + 10 + 12) { 
      t1 = ((365 * y1) + d1 + 31); 
     } else if (m1 == 2) { 
      t1 = ((365 * y1) + d1 + 28); 
     } else if (m1 == 4 + 6 + 9 + 11) 
      ; 
     { 
      t1 = ((365 * y1) + d1 + 30); 
     } 
     } 
    else { 
     System.err.printf("Error. Please enter a date after Jan 1st 1900.\n"); 
     } 
     } 
public static void main(String[] args) { 

date1(); 
caldate1(); 
} 
} 

두 번째 오류는 첫 번째 방법에서 오류가 발생할 때 나타납니다. 누구든지이 원인을 알 수 있습니까? 아니면 내가 뭘 잘못하고 있니? 사용자가 정수가 아닌 다른 값을 입력하면 오류가 발생합니다. 또한 누구든지 오류가 적용될 때 각 메서드에 루프를 설정할 수있는 방법을 알고 있습니까?다른 방법의 오류 메시지가 나타나는 이유는 무엇입니까?

답변

0

:

m1 == 4 + 6 + 9 + 11m1 == 30는 동일하다. 나는 당신이 두 번째 m1 == 4 || m1 == 6 || m1 == 9 || m1 == 11

의미 생각 :

이 줄 당신이 t1을 설정하지 않기 때문에 if (t1 > j)는 사실이 결코를, 그래서 제로 그리고 제로가 될 수 없습니다보다 큰 693502.

2

값을 지정하기 전에 t1 값을 테스트하고 있습니다.

3

내가 알 수있는 한, caldate1은 항상 오류 사례를 반환합니다. int은 특별히 지정하지 않는 한 0으로 초기화되므로 if (t1 > j)의 조건은 항상 if (0 > 693502)으로 낮추어 지므로 절대 오류가 발생하지 않습니다. t1은 해당 조건이 true 인 경우에만 설정됩니다 (그렇지 않음).

date1의 오류는 scanner.nextLine() 문이 사용자 입력을 기다리고 계속 실행되기 때문에 예상대로 표시되지 않습니다.

1

마지막으로 if else 복합 문 다음에 세미콜론이 있고 그 다음에 t1에 값을 할당하는 격리 된 블록이 뒤 따른다는 것을주의해야합니다. else if 조건이 충족 될 때만 t1 할당이 발생하기를 원합니다.

코드 스타일에주의를 기울이는 것이 좋습니다. 당신이 할 때 이것과 같은 작은 일들이 당신에게 뛰어납니다. 우선

관련 문제