2013-04-13 4 views
0

Хорошо, отделил мой код. Теперь, когда я бегу, я просто получаю одну ошибку следующим образом:несовместимые типы ошибка я не могу понять

Exception in thread "main" java.lang.RuntimeException: Uncompilable source code - Erroneous tree type: InventoryPro2.MobilePhone 
    at InventoryPro2.InventoryPro2.main(InventoryPro2.java:12) 
Java Result: 1 

То, что я взял из предыдущих ответов было то, что мне нужно, чтобы переместить класс и № мобильного телефона класса InventoryPro2 на отдельные .java файлов в пределах одного проекта. Я пропустил это? Как я уже говорил, я совершенно новичок в этом, и было ужасно пытаться быстро изучить все это, одновременно изучая другой язык программирования. Спасибо за помощь, пока это очень ценится.

package InventoryPro2; 



    public class InventoryPro2 { 

     public static void main(String args[]) { 
      MobilePhone MobilePhoneObject = new MobilePhone(); 
      MobilePhoneObject.MobilePhone(); 
      System.out.println("Mobile Phone Inventory"); 
      System.out.println();//skips a line 

      MobilePhone[] Phones = new MobilePhone[5]; 

      Phones[0] = new MobilePhone(1, "Motorola", "Electronics", 98, 150.00); 
      Phones[1] = new MobilePhone(2, "LG", "Electronics", 650, 199.99); 
      Phones[2] = new MobilePhone(3, "Samsung", "Electronics", 125, 200.25); 
      Phones[3] = new MobilePhone(4, "Nokia", "Electronics", 200, 100.05); 
      Phones[4] = new MobilePhone(5, "IPhone", "Electronics", 138, 125.75); 


      for (int count = 0; count < Phones.length-1; count++) { 



       System.out.printf("Product Number: %1f\n", Phones[count].getproductNumber()); 
       System.out.printf("Product Name: %s\n", Phones[count].getname()); 
       System.out.printf("Units In Stock: %.2f\n", Phones[count].getunitsInStock()); 
       System.out.printf("Unit Price: $%4.2f\n", Phones[count].getunitPrice()); 
       System.out.printf("Inventory Value: $%4.2f\n", Phones[count].gettotalInv()); 
       System.out.println(); //blank line to seperate products 

      } 
     } 
    } 

package inventorypro2; 

class MobilePhone { // Create class to store values 

    private double productNumber; // Variables 
    private String name; 
    private String department; 
    private double unitsInStock; 
    private double unitPrice; 

    public MobilePhone() { 
     this(0.0, "", "", 0.0, 0.0); 
    } 

    public MobilePhone(double productNumber, String name, String department, 
      double unitsInStock, double unitPrice) { //assign variables 
     this.productNumber = productNumber; 
     this.name = name; 
     this.department = department; 
     this.unitsInStock = unitsInStock; 
     this.unitPrice = unitPrice; 
    } 

    public double getproductNumber() { // retrieve values 
     return productNumber; 
    } 

    public String getname() { 
     return name; 
    } 

    public String getdepartment() { 
     return department; 
    } 

    public double getunitPrice() { 
     return unitPrice; 
    } 

    public double getunitsInStock() { 
     return unitsInStock; 
    } 

    public void setproductNumber(double productNumber) { 
     this.productNumber = productNumber; 
    } 

    public void setname(String name) { 
     this.name = name; 
    } 

    public void setdepartment(String department) { 
     this.department = department; 
    } 

    public void setunitPrice(double unitPrice) { 
     this.unitPrice = unitPrice; 
    } 

    public void setunitsInStock(double unitsInStock) { 
     this.unitsInStock = unitsInStock; 
    } 

    public double gettotalInv() { 
     return getunitPrice() * getunitsInStock(); 
    } 
} 

ответ

3

Phones[0] = count + 1;

Левая не является целым числом, а право представляет собой целое число.

Что касается вашего последнего изменения, я бы предложил поставить один класс на файл (и сделать его общедоступным).

В качестве альтернативы можно сделать внутренний класс. Но файл должен иметь один внешний класс (не обязательно так: Java: Multiple class declarations in one file), но я думаю, что это упростит ситуацию.

+0

Я думаю, что я сделал это правильно, просто получив одну ошибку. Я обновил свой вопрос с помощью одной ошибки компиляции. – SadNoob

+0

Что находится в строке 12 InventoryPro2.java? – Kirby

+0

Я также только что обновил код, чтобы отразить изменения, которые я сделал. Все еще получаю ту же ошибку компиляции. Попытка найти его через google/youtube/другие справочные сайты была моим мероприятием на весь день и не находила ответы очень быстро. – SadNoob

0

Phones[0] = count + 1;

Что вы здесь делаете? Вы назначаете целое число (int) на мобильный телефон (MobilePhone)! Удалите эту линию, вам будет хорошо идти.

+0

java.lang.NoClassDefFoundError: inventorypro2/InventoryPro2 (неправильное название: InventoryPro2/InventoryPro2) \t на java.lang.ClassLoader.defineClass1 (Native Method) \t в java.lang.ClassLoader.defineClassCond (ClassLoader.java:631) \t на java.lang.ClassLoader.defineClass (ClassLoader.java:615) \t на java.security.SecureClassLoader.defineClass (SecureClassLoader.java:141) \t в java.net.URLClassLoader.defineClass (URLClassLoader.java:283) \t at java.net.URLClassLoader.access $ 000 – SadNoob

+0

Извините, что форматирование не смогло получить все, чтобы соответствовать. Это примерно половина ошибок, которые я получил, но ничего не отображается красным цветом в редакторе исходного кода. (с использованием netbeans). – SadNoob

+0

У меня тоже не было комментариев, чтобы пойти с этим беспорядком? это ошибки компиляции, которые я получаю после исправления вышеуказанной ошибки. – SadNoob

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