2012-01-26 13 views
2

Я сделал google, но не могу понять, что не так с моим кодом здесь.Java незаконный запуск выражения

Я получаю Illegal начала выражения ошибки в, если заявлении на первое «Иначе, если»

Я довольно новый для Java, но при попытке быстро узнать, как св требование моей вычислительной техники Конечно, я надеюсь.

Любая помощь очень ценится.

import java.util.Scanner; 

public class net_salary{ 

public static void main(String[]args){  
    Scanner in = new Scanner(System.in);  

    int income; 
    int incometax; 
    int afterincometax; 
    int nationalinsurance; 
    int afterni; 
    int pension; 

    income = in.nextInt();  

    if(income = 0) { 
     incometax = 0; 
    } else if (income >=9000 & <=21000) { 
     incometax = income * 0.15; 
    } else if (income >=21000 & <=31000) { 
     incometax = income * 0.2;  
    } else if (income >=31000 & <=50000) { 
     incometax = income * 0.225     
+0

Улыбается вопрос. –

ответ

6

Вам нужно else if (income >=9000 && income <=21000) вместо else if (income >=9000 & <=21000).

Аналогичным образом для других else if выражений.

Вам нужно сделать два отдельных сравнения с доходом. Вы не можете сказать «если доход больше или равен 9000 или меньше или равен 21000». Вы должны сказать: «если доход превышает 9000, или доход меньше или равен 21000».

& Побитовое И. && является логическим И.

Как указано другими, income = 0 следует читать income == 0.

+0

Привет !, Спасибо за ответ даже с двойным &&, я все еще получаю ту же ошибку. –

+0

Извините. Я добавляю изменения. См. Обновленный ответ. –

+0

Помогите идиоту и покажите мне, как это будет выглядеть? Я получаю то, о чем вы говорите, но не знаете, как его опустить - снова приветствует. –

1

Ваше выражение if/else if block всегда должно иметь значение boolean (true или false). В Java & & представляет AND, & - это побитовый оператор, который манипулирует битами.

if(income == 0) 
    { 
     incometax = 0; 

    } 
**else if (income >=9000 && income <=21000)** 
    { 
     incometax = income * 0.15; 
    } 

else if (income >=21000 && income <=31000) 
    { 
     incometax = income * 0.2; 

    } 

else if (income >=31000 && income <=50000) 
    { 
     incometax = income * 0.225 
+0

Спасибо за помощь! –

3

Вам нужно & & не & и повторите переменную 'дохода':

else if (income >=9000 && income <=21000) 

Вы также используете = где вы, вероятно, имели в виду ==

if(income == 0) 

= присваивает value, == проверяет, равны ли два значения.

+0

Спасибо за помощь! –

1

if(income = 0)

должен быть

if(income == 0)

и

else if (income >=9000 & <=21000)

(и это последователи) должны быть

else if (income >=9000 && income <=21000)

и похоже, что вам нужно сделать некоторые из ваших переменных double вместо int.

+2

Ваш комментарий к блоку 'else if' кажется странным. Вы по-прежнему используете побитовое 'AND' в вашей исправленной версии, и вы проверяете, является ли' 9000 <= 21000' (зачем вы это когда-либо делаете?). – eldarerathis

+1

... Я думаю, вы хотели проверить, есть ли доход <= 21000'. : - \. –

+1

@ Zéychin: Вы правы. Ред. –

1

Проверьте использование «=», «==», «&», «& &» операторов на Java.

public class net_salary{ 
    public static void main(String[]args){ 
    int income, ncometax, afterincometax, nationalinsurance, afterni, pension; 
    Scanner in = new Scanner(System.in); 
    income = in.nextInt(); 

    if(income == 0) { 
     incometax = 0; 
    } else if (income >= 9000 && income <= 21000) { 
     incometax = income * 0.15; 
    } else if (income >=21000 && income <= 31000) { 
     incometax = income * 0.2; 
    } else if (income >=31000 && income <= 50000) { 
    } 
    } 
} 
+0

Спасибо за помощь! –

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