2014-02-01 2 views
-2

Компилятор продолжает говорить, что есть ошибка в моей инструкции if else, и я не могу понять, почему.ошибка программы проекта, которую я вообще не могу найти

import java.util.Scanner; 

public class PackingOrganizer{ 
    public static void main(String[] args){ 

     int cartons = 4, boxes = 5; 

     Scanner input = new Scanner(System.in); 
     System.out.print("Enter number of items : (All partial items are to be rounded up. ex. 6.5 items is rounded to 7 items)"); 
     double itemcount = input.nextDouble(); 

     if (itemcount != (int) itemcount); 
      System.out.println("Invalid input round all partial numbers up"); 
     else if (itemcount % cartons = 0){ 
       int containerAmount =(itemcount \ cartons); 
       System.out.println("Cartons can be used. The" + itemcount + " items will require " + containeramount + " cartons. ");} 
     } 
    } 
} 
+1

Какую ошибку вы видите? – Pshemo

+1

удалите точку с запятой после оператора if. – Hannes

+0

Я удалил точку с запятой, но она все еще не работает. инструкция else if красная. он говорит, что неожиданный тип требуемой переменной найденного значения –

ответ

5

Есть несколько ошибок на самом деле:

  • точкой с запятой сразу после того, если пункт
  • \ не является символом разделения, / является один
  • itemcount является double, и разделив его на a int мы получаем double, но containerAmount объявлено int
  • itemcount % cartons = 0 не является допустимым логическим выражение, вы, вероятно, хотели itemcount % cartons == 0
  • опечатки: containerAmount объявлен, но containeramount ссылается

Совет: попробуйте использовать некоторые синтаксис и динамически компиляции IDE. Я могу рекомендовать eclipse или IntelliJ IDEA

+0

Я удалил его, и он все еще не работает –

+2

@JimJANES: «не работает» мало говорит нам, что мы можем вам помочь. Какие * новые * ошибки или проблемы вы видите? Можете ли вы опубликовать последний код? Помогите нам помочь. –

+0

Благодарим за добавление дополнительной информации. Кажется, он будет работать теперь благодаря большому количеству. –

0

Вам нужны некоторые изменения:

public static void main(String[] args) { 

    int cartons = 4, boxes = 5; 

    Scanner input = new Scanner(System.in); 
    System.out.print("Enter number of items : (All partial items are to be rounded up. ex. 6.5 items is rounded to 7 items)"); 
    double itemcount = input.nextDouble(); 

    if (itemcount != (int) itemcount) { 
     System.out.println("Invalid input round all partial numbers up"); 
    } else if (itemcount % cartons == 0) { 
     int containerAmount = (int) (itemcount/cartons); 
     System.out.println("Cartons can be used. The" + itemcount + " items will require " + containerAmount+ " cartons. "); 
    } 
} 
0

У вас есть ; сразу после if (itemcount != (int) itemcount). Это означает, что ваше условное значение равно if, ничего не будет сделано, и тогда System.out.println("Invalid input round all partial numbers up"); всегда будет выполняться. Однако есть также else, который теперь не может найти iff, к которому он присоединен, потому что у вашего if есть два утверждения после него и без фигурных скобок ({}). Чтобы избежать таких ошибок, я рекомендую всегда использовать фигурные скобки, как это:

if (itemcount != (int) itemcount) { 
    System.out.println("Invalid input round all partial numbers up"); 
} 
... 

Это может помочь вам избежать таких сбоев компиляции.

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