2013-08-05 5 views
3

Я использовал эту программу для своей цели. импорт java.util.Scanner;программа, чтобы найти NIC Подробнее

class NIC_Details { 

String id; 
int month[] = {31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31}; 

NIC_Details() { 
    Scanner input = new Scanner(System.in); 
    System.out.println("Enter Your NIC Number \nLike : 000000000V"); 
    id = input.next(); 
} 

int getYear() { 
    return (1900 + Integer.parseInt(id.substring(0, 2))); 
} 

int getDays() { 
    int d = Integer.parseInt(id.substring(2, 5)); 
    if (d > 500) { 
     return (d - 500); 
    } else { 
     return d; 
    } 
} 

public void setMonth() { 
    int mo = 0, da = 0; 
    int days = getDays(); 

    for (int i = 0; i < month.length; i++) { 
     if (days < month[i]) { 
      mo = i + 1; 
      da = days; 
      break; 
     } else { 
      days = days - month[i]; 
     } 
    } 
    System.out.println("Month : " + mo + "\nDate : " + da); 

} 

public String getSex() { 
    String M = "Male", F = "Female"; 
    int d = Integer.parseInt(id.substring(2, 5)); 
    if (d > 500) { 
     return F; 
    } else { 
     return M; 
    } 
} 

public static void main(String[] args) { 
    NIC_Details N = new NIC_Details(); 
    System.out.println("Your Details of Date of Birth from NIC Number"); 
    System.out.println("Year : " + N.getYear()); 
    N.setMonth(); 
    System.out.println("Sex : " + N.getSex()); 
} 
} 

но когда я ввожу номер NIC как этот 93031 * ** Это дает это детали

Enter Your NIC Number 
Like : 000000000V 
93031****** 
Your Details of Date of Birth from NIC Number 
Year : 1993 
Month : 2 
Date : 0 
Sex : Male 

Пожалуйста, покажите мне, что случилось здесь.

+2

Есть проблема? Или вы просто хотите понять, как это работает? – Maroun

+0

Я хочу знать, где моя ошибка – JLink

+0

Ну, вы должны сообщить нам, есть ли ошибка: что это такое? Где это? Или если результат неправильный, то для какого ввода? И что вы ожидаете? – Maroun

ответ

1

Ваш код в порядке, это ваша логика, которая имеет проблемы.

Ваши данные - 31 дней. Ваш метод setMonth() спрашивает, days < month[i], когда month[0]==31.
Ответ нет, тогда вы делаете days = days - month[i];, который составляет days = 0, и month = 2.

вы можете изменить, если заявление:

if (days <= month[i]) { 

, но это зависит от погоды 31 дней означает, что 31 дней прошло, а затем ваш код хороший способ это

+0

позвольте мне проверить мою логику .... – JLink

Смежные вопросы