2014-03-01 12 views
0

嘿,我創建了一個返回true或false的子程序。現在在我的主要中,我不能在我的if語句中使用它。這是我塑造了我的if語句:如何在我的主子程序中使用布爾返回值

Uniqueyear(year); 

    if (Uniqueyear()) { 
     System.out.println(year + "is unique."); 
    } 

    else { 
     year++; 
     Uniqueyear(year); 
    } 

} 

然而,當我編譯我的程序它說:「法Uniqueyear類DistinctDigits不能應用於給定類型,需要 :整數 發現:沒有參數 理由:實際和正式的參數列表長度不同「

我是編程新手,似乎無法修復它。我也嘗試編寫」if(Uniqueyear(year)){..但它弄亂了我的輸出。子程序,以防在我的退貨聲明或其他任何問題中出現問題:

public static boolean Uniqueyear(int a) { 

    String year= Integer.toString(a); 

    for (int i=0; i<year.length(); i++) { 
     for(int j = i + 1; j < year.length(); j ++){ 
      if (year.charAt(i) == year.charAt(j)) { 
       return true; 
      } 
     } 
    } 
    return false; 

任何幫助將不勝感激。 :)

回答

0

「子程序」被稱爲方法。由於它是靜態的,因此它是一個類方法(一種在類上而不是在實例上調用的方法,如非靜態方法)。

當您調用Uniqueyear(year)時,您正在調用該類中的Uniqueyear方法。

您已經定義了一個接收int的Uniqueyear方法。所以無論何時調用它,編譯器都會期望找到傳遞給它的整數值。

因此,當你做

if (Uniqueyear()) { 
} 

編譯器會抱怨你沒有通過必要的參數Uniqueyear。

您可以將先前調用的返回值存儲到Uniqueyear,然後使用該值作爲if。

boolean myBoolean = Uniqueyear(year); 
if (myBoolean) { 
} 

或者,您也可以刪除第一個Uniqueyear調用並將其直接放入if條件中。

if (Uniqueyear(year)) { 
} 
+0

謝謝!你讓我今天很開心 – user3345066