2013-05-06 6 views
0

Я продолжаю получать ошибки, когда пытаюсь скомпилировать эти коды ниже, в настоящее время я использую JCreator.Проблема с while-loop statement

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

2

Вы не можете использовать оператор = для сравнения значений; это оператор присваивания. Используйте ==, чтобы сравнить int значения:

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

Оператор присваивания здесь вычисляется в int, получая сообщение об ошибке, которое вы получили.

+0

Спасибо, я заменил на ==, и мне удалось запустить коды, однако, когда я вводил числа, он продолжал цикл и никогда не останавливался :( – moon

+0

Внутри цикла while вы никогда не меняете 'number' или' counter' так нет никакого способа выйти из цикла while. – rgettman

+0

Спасибо, что ответили: «Я все равно могу распечатать« goodMessage »? – moon

0

while ((counter = 0)&&(number > 0)) никогда не верно, потому что (counter = 0) присваивает счетчик быть 0 и значение этого утверждения является значение counter: 0. И 0 - int и не может быть преобразован в boolean.

+2

' (counter = 0 && ...) 'не является ложным, он даже не компилируется, потому что Java не подразумевает конвертацию в boolean. – cHao

+0

вы правы ... я был в c-land в своих мыслях ... я меняю answer – luksch

0

В чем проблема?

В этом коде очень много ошибок ... Чтобы проверить, равно ли два целых числа, вы должны написать == not =. (В while и in if).

+0

Обратите внимание, что даже если условия зафиксированы так, что они скомпилированы, половина бесполезна. 'if (counter <3);' ничего не делает, если счетчик <3, после чего он ... ничего не делает.конец представляет собой пустой оператор; это как сказать 'if (counter <3) {}'. – cHao

Смежные вопросы