2013-09-21 74 views
0

以我的第一個Java類,我堅持愚蠢。我正在做迴文項目。這個邏輯看起來不錯。無論哪種情況都顯示爲True。我究竟做錯了什麼?Java作業。布爾邏輯的問題

呼叫:

boolean result = check(input); 

或在該方法本身:

public static void display(boolean result, String palindrome) 
{ 
    if (result = true) 
    { 
     JOptionPane.showMessageDialog(null, palindrome 
       + " is a palindrome."); 
    } else 
     JOptionPane.showMessageDialog(null, palindrome 
       + " is not a palindrome."); 

} 

這裏是整個代碼: 進口javax.swing.JOptionPane中;

public class Palindrome 
{ 

public static void main(String args[]) 

{ 
    // declare variables 

    // call methods 
    String input = retrieveInput(); 
    boolean result = check(input); 
    display(result = false, input); 
    finish(); 
} 

// Accepts and validates input 
public static String retrieveInput() 
{ 
    // declare variables 
    int length; 
    String palindrome = null; 
    boolean done = false; 
    while (!done) 
    { 
     try 
     { 
      // user input 
      palindrome = JOptionPane.showInputDialog(null, 
        "Please enter a 5 digit integer:"); 
      length = palindrome.length(); 

      // data validation 
      if (length != 5) 
      { 
       throw new NumberFormatException(); 
      } else 
       done = true; 
     } 

     catch (NumberFormatException e) 
     { 
      JOptionPane.showMessageDialog(null, 
        "Error. Please enter a 5 digit integer", "Error", 
        JOptionPane.INFORMATION_MESSAGE); 
     } 
    } 
    return palindrome; 
} 

public static Boolean check(String palindrome) 
{ 
    // determine if palindrome 

    int left = 0; 
    int right = palindrome.length() - 1; 

    while (left < right) 
    { 
     if (palindrome.charAt(left) != palindrome.charAt(right)) 
      return false; 

     left++; 
     right--; 
    } 

    return true; 

} 

// The output method displays commission and sales 
public static void display(boolean result, String palindrome) 
{ 
    if (result = true) 
    { 
     JOptionPane.showMessageDialog(null, palindrome 
       + " is a palindrome."); 
    } else 
     JOptionPane.showMessageDialog(null, palindrome 
       + " is not a palindrome."); 

} 

// finish() method exits program 
public static void finish() 
{ 
    System.exit(0); 
} 

} 
+0

「請輸入5位數的整數」 你的意思是像12345? 整數只是一個數字。我相信你的意思是一個5個字的單詞? –

+0

'if(result = true)'不能用Java編譯。你確定你發佈了真實的代碼嗎? –

+0

Daniel Bo,是的,這條指令絕對要求整數,完全像12345(或12321爲有效迴文 – user2802785

回答

2

==用於比較值。

=是賦值運算符,而不是比較運算符。

這樣試試:

if (result == true) 

if (result) 

你完整的代碼編輯後:

public static void main(String args[]) 
{ 
    String input = retrieveInput(); 
    boolean result = check(input); 
    display(result, input); // change result = false 
    finish(); 
} 
+1

只要做'如果(結果)'就乾淨了,並且消除了你犯這個錯誤的機會! Zaheer Ahmed, –

+0

,謝謝!我已經解決了這個問題。我有一個雙重問題。最大的問題是使用「=」而不是「==」。另一個問題是,在排除故障時,我爲調用「display(false,input)」添加了「= false」。 – user2802785

1

在這一行

if (result = true) 

您的值true分配給變量result並將該值(true)被用作該條件爲if,不檢查是否result等於true。換句話說,您的if將始終評估其狀態爲true

你會需要使用==操作

if (result == true) 

或者乾脆

if (result) 
3
if (result = true) 

result爲true,(再次,作爲true)對其進行評估。用途:

if(result==true) 

if(result) 

代替。前者是大多數價值比較的語法,後者僅適用於布爾值。