2017-12-02 168 views
0

我創建了一個sodoku檢查器。這是我迄今爲止所做的,但我有點碰壁。在我的檢查器中,我不允許將方法中的一個從int更改爲布爾值,這對我來說很困難。java中的數獨檢查器幫助需要從布爾型切換到int

public class SudokuVerifier { 
public static int[][] candidateSolution() 
{ 
    Scanner input = new Scanner(System.in); 
    int [][] sudokuboard = new int [9][9]; 

    for (int i = 0; i < 9; i++) 
     for (int j = 0; j < 9; j++) 
      sudokuboard[i][j] = input.nextInt(); 

    input.close(); 
    return sudokuboard; 
} 
public int verify(String candidateSolution) 
//checking rows 
{ 
    for (int i = 0; i < sudokuboard.length; i++) 
     if (validcheck(sudokuboard[i])) 
      return 1; 

} 
/** 
* Tells the candidate to enter their sodoku puzzle 
* it then gets stored into a 2 dimensional array 
* array gets returned 
* tells them if it's right or wrong 
* @author sultan 
* 
*/ 
public static void main(String[] args) 
{ 
int [][] sudokuboard = candidateSolution(); 
System.out.print(solutionChecker(sudokuboard) ? "right solution" : "Wrong solution"); 

} 
public static boolean solutionChecker(int [][] sudokuboard) 
{ 

return true; 

}}

「公共INT驗證」是我無法改變的一部分,它給我的錯誤。所以我想知道是否有一種方法來保持這段代碼差不多相同,但使用整數我的返回而不是布爾值來計算行,列和3X3板。有人可以請幫助,我卡住了

+0

所以你要使用方法返回的int,而不是布爾,只是使該方法返回1或0(TRUE或FALSE)。 – prsvr

+0

或返回未通過有效性檢查的字段數量,其中0表示「無錯誤」==「已解決」。 – daniu

回答

0

只是返回int 1意思是正確的,0意味着不正確。假設validcheck返回true,如果組合是正確的:

public int verify(String candidateSolution) 
//checking rows 
{ 
    for (int i = 0; i < sudokuboard.length; i++) 
     if (! validcheck(sudokuboard[i])) 
      return 0; 

    return 1; 

} 

有語言(如ANSI C)不使用布爾可言。 0表示條件未實現,而0以外的任何條件表示條件已滿足。

+0

感謝您的幫助。還有一個問題,想知道你能否幫助我。出於某種原因,我的「sudokuboard」變量不能用於我的驗證計算,即使它在我的主要方法中使用,並且它在那裏工作得很好。它告訴我,當我將鼠標懸停在它上面時,「sudokuboard無法解析成變量」。你知道這是爲什麼嗎?對於列和行,「sudokuboard」變量爲[9] [9] – Sultan

+0

您的'sudokuboard'變量在'main'方法中聲明,並且在其外部不可見,所以'verify'方法不能看到那。您需要在'main'方法之外聲明該變量,或者將其從'main'傳遞給'verify'方法。這非常簡單,我想你會處理。祝你好運;) – zlatan55

+0

我做了int [] [] sudokuboard = new int [9] [9];這似乎解決了這個問題,但我不太確定它是否正確。我一直試圖做這個數獨棋子幾個小時,現在你能不能幫助我多一點,只是告訴我,如果這是正確的?真的不想繼續它是錯誤的,搞砸了一切 – Sultan

0

當if語句爲真時,函數只返回一個值。 當語句爲false時,需要添加以返回int。

莫里茨