2013-05-06 45 views
0

當我嘗試編譯下面的這些代碼時,我總是收到錯誤,我正在使用JCreator。while循環語句的問題

import java.io.*; 

public class Number //class name here, same as file name 

{ 
public Number()throws IOException{//constructor, place class name here 
// use BufferedReader class to input from the keyboard 
// declare a variable of type BufferedReader 
BufferedReader input = new BufferedReader(new InputStreamReader(System.in)); 
//declare variable for input 
String inputString; 

int number; 
int counter; 
int square; 
int cube; 
String goodMessage = "Thank you"; 
String badMessage = "Sorry"; 

//begin houseKeeping() 
System.out.print("Please input number: "); 
inputString = input.readLine(); 
number = Integer.parseInt(inputString); 

//begin squareCube() 
counter = 0; 
while ((counter = 0)&&(number > 0)) { 
    square = number*number; 
    cube = number*number*number; 
    System.out.print(square); 
    System.out.print(cube); 
} 
if (counter = counter + 1); 
if (counter < 3); 
System.out.print("Enter input number: "); 

//begin finishUp() 
if (number > 0) 
    System.out.println(goodMessage); 

    else 
    System.out.println(badMessage); 

}//end constructor 

public static void main(String [] args) throws IOException // main method 

{ 
new Number(); //class constructor name 
} // end the main method 
} // end the program 

錯誤:

--------------------Configuration: <Default>-------------------- 
D:\INFO\INFO 1391\Number.java:27: error: bad operand types for binary operator '&&' 
    while ((counter = 0)&&(number > 0)) { 
         ^
    first type: int 
    second type: boolean 
1 error 

Process completed. 

回答

2
counter = 0 

應該

counter == 0 
+0

非常感謝你的回覆! – moon 2013-05-06 19:43:57

2

您不能使用=運算符來比較值;這是分配運算符。使用==來比較你的int值:

while ((counter == 0)&&(number > 0)) { 

賦值操作符這裏計算結果爲int,產生您收到的錯誤消息。

+0

謝謝,我用==代替了,而且我能夠運行這些代碼,但是當我輸入數字時,它保持循環並且永不停止:( – moon 2013-05-06 19:35:50

+0

在你的while循環中,你永遠不會改變'number'或'counter'有沒有辦法讓它退出while循環。 – rgettman 2013-05-06 19:37:55

+0

謝謝你的迴應,有沒有反正我可以把它打印出來「goodMessage」? – moon 2013-05-06 19:42:27

0

while ((counter = 0)&&(number > 0))是不正確的,因爲(counter = 0)分配計數器設置爲0和語句的值是counter值:0。而0int,不能轉換爲boolean

+2

'(counter = 0 && ...)'不是錯誤的,它甚至不會編譯,因爲Java不會隱式地轉換爲布爾值 – cHao 2013-05-06 19:28:46

+0

你是對的...我在c-land的思想中......我改變了我的答案 – luksch 2013-05-06 19:43:16

0

問題在哪裏?

這段代碼有這麼多錯誤... 要檢查兩個整數是否相等,你必須寫==不= =。 (在時間和如果)。

+0

注意,即使一旦條件固定以便它們編譯,一半是無用的。if(counter <3);'除非計數器<3,否則什麼也不做。最終構成一個空洞的聲明;就像說'if(counter <3){}'。 – cHao 2013-05-06 19:45:36