2013-03-07 41 views
0

如何比較具有標量值的數組元素?如何比較具有標量值的數組元素

這裏是代碼有錯誤的部分:

if(month != numMonth[]) 
    System.out.printf("\n not a valid month"); 
if (day != daysInMonth[] && day> daysOfMonth[month]) 
    System.out.printf("\n not a valid day"); 
if (year<1880 && year>2280) 
    System.out.printf("\n not a valid year"); 

(day != daysInMonth[] && day> daysOfMonth[month]) EXPR我得到一個類文件預期的錯誤。

+0

'month!= numMonth []'這是偶編譯嗎? – Abubakkar 2013-03-07 17:07:29

+0

'(day!= daysInMonth [month] && day] daysOfMonth [month]'!!! – 2013-03-07 17:08:00

回答

0

使用

if (month < 0 || month > 11) 

if (month < 1 || month > 12) 

取決於是否編號從0或從1開始。

0

可以用一個標量,而不是整個陣列進行比較的陣列的元件。另外你正在使用的語法只是在聲明時有效:

int numMonth[] = new int[10]; 
or 
int numMonth[] = {1,2,3}; 

and so on 

來比較,你需要參考你要比較它的元素單個標:

// to compare with the 1st entry 
numMonth[0] == month; // with arrays being zero based 
// to compare with the 2nd entry 
numMonth[1] == month; 

and so on 
0

我將建議一個更簡單的替代方案(恕我直言)。

對於這個任務,我會直接使用Calendar類,以避免將不同的日期和年份存儲在數組中。閏年在這裏的特殊情況下可能是一個問題。

首先,驗證幾年。他們是這條鏈中最簡單的驗證,並且像他們幾個月一樣,他們不依賴任何輸入的連續參數。你做的最後一個檢查,成爲這種情況下的第一個:

if (year < 1880 && year > 2280) 
    System.out.printf("\n not a valid year"); 

驗證一年後,驗證月份。他們也是一個簡單的號碼,但你必須定義你如何管理它們。我會好好範圍1 -> 12

if(month < 1 || month > 12) 
    System.out.printf("\n not a valid month"); 

最後,你建立了一個Calendar的幫助下日期。通過這種方式,您可以獲得與特定月份相對應的正確天數。然後,你相應地進行驗證。

Calendar cal = Calendar.getInstance(); 
cal.set(Calendar.YEAR, year); 
cal.set(Calendar.MONTH, month - 1); //Calendar manages the months 
            //from 0 to 11, that's why 
            //you need to substract 1 
int maxDays = cal.getActualMaximum(Calendar.DAY_OF_MONTH); 

maxDays包含給定月份和年份的最大天數。現在,你只需要查身份證當天的輸入範圍爲:

if (day < 1 || day > maxDays) 
    System.out.printf("\n not a valid day"); 

這樣,你不需要保留的天每月的軌道,你還可以管理閏年。