2011-10-23 15 views
0

以下は、エラーが発生するテストコードですPizza order = new Pizza(); Pizza.classをPizzaorder.classファイルにインポートしなかったと思います。誰もがこのエラーを修正するのに役立つことができます。Javaでユーザー定義クラスをインポートする

コードが続きます。

Pizza.java

package pizza; 
public class Pizza { 
     private double cost; //the cost of the pizza 
    private String crust; //the type of crust 
    private int size; //the diameter in inches 
    private int numToppings; //the number of toppings 
    private String toppingList; //a list of the toppings 
    public static void main(String[] args) { 
    } 
    public Pizza() 
    { 
     cost = 12.99; 
     crust = "Hand-tossed"; 
     size = 12; 
     numToppings = 0; 
     toppingList = null; 
    } 
    public void setCost (double amount) 
     { 
      cost += amount; 
     } 
    public void setCrust (String type) 
    { 
     crust = type; 
    } 
    public void setSize (int diameter) 
    { 
     size = diameter; 
    } 
    public void setNumToppings(int number) 
    { 
     numToppings = number; 
    } 
    public void setToppingList (String newTopping) 
    { 
     toppingList = newTopping; 
    } 
    public double getCost() 
    { 
     return cost; 
    } 
    public String getCrust() 
    { 
     return crust; 
    } 
    public int getSize() 
    { 
     return size; 
    } 
    public int getNumToppings() 
    { 
     return numToppings; 
    } 
    public String getToppingList() 
    { 
     return toppingList; 
    } 
} 

PizzaOrder.java

package pizza; 
import java.util.Scanner; 
public class PizzaOrder { 
    public static void main (String [] args) 
    { 
       Scanner keyboard = new Scanner (System.in); 
       Pizza order = new Pizza(); 
       String firstName; 
     boolean discount = false; 
       int inches; 
     char crustType; 
     double cost; 
     final double TAX_RATE = .08; 
     double tax; 
     char choice; 
     String input; 
     String toppings = "Cheese "; 
     int numberOfToppings = 0; 
     System.out.println("Welcome to Abdul and " + 
     "Diane’s Pizza"); 
     System.out.print("Enter your first name: "); 
     firstName = keyboard.nextLine(); 
     System.out.println("Pizza Size (inches)  Cost"); 
     System.out.println("  10   £10.99"); 
     System.out.println("  12   £12.99"); 
     System.out.println("  14   £14.99"); 
     System.out.println("  16   £16.99"); 
     System.out.println("What size pizza would you like?"); 
     System.out.print("10, 12, 14, or 16 " + "(enter the number only): "); 
     inches = keyboard.nextInt(); 
     keyboard.nextLine(); 
     System.out.println("What type of crust do you want? "); 
     System.out.print(
     "(H)Hand-tossed, (T) Thin-crust, or " + 
     "(D) Deep-dish (enter H, T, or D): "); 
     input = keyboard.nextLine(); 
     crustType = input.charAt(0); 
       System.out.println("All pizzas come with cheese."); 
     System.out.println(
     "Additional toppings are £1.25 each," 
     + " choose from"); 
     System.out.println(
     "Pepperoni, Sausage, Onion, Mushroom"); 
     System.out.print("Do you want Pepperoni? (Y/N): "); 
     input = keyboard.nextLine(); 
     choice = input.charAt(0); 
     if (choice == 'Y' || choice == 'y') 
     { 
      numberOfToppings += 1; 
      toppings = toppings + "Pepperoni "; 
     } 
     System.out.print("Do you want Sausage? (Y/N): "); 
     input = keyboard.nextLine(); 

     choice = input.charAt(0); 
     if (choice == 'Y' || choice == 'y') 
     { 
      numberOfToppings += 1; 
      toppings = toppings + "Sausage "; 
     } 
     System.out.print("Do you want Onion? (Y/N): "); 
     input = keyboard.nextLine(); 

     choice = input.charAt(0); 
     if (choice == 'Y' || choice == 'y') 
     { 
      numberOfToppings += 1; 
      toppings = toppings + "Onion "; 
     } 
     System.out.print("Do you want Mushroom? (Y/N): "); 
     input = keyboard.nextLine(); 
     choice = input.charAt(0); 
     if (choice == 'Y' || choice == 'y') 
     { 
      numberOfToppings += 1; 
      toppings = toppings + "Mushroom "; 
     } 
     order.setNumToppings (numberOfToppings); 
     order.setToppingList(toppings); 
     order.setCost(1.25*numberOfToppings); 
     System.out.println(); 
     System.out.println("Your order is as follows: "); 
     System.out.println(order.getSize() + " inch pizza"); 
     System.out.println(order.getCrust() + " crust"); 
     System.out.println(order.getToppingList()); 
     cost = order.getCost(); 
       System.out.println("The cost of your order is: £" + 
     cost); 
     tax = cost * TAX_RATE; 
     System.out.println("The tax is: £" + tax); 
     System.out.println("The total due is: £" + 
     (tax+cost)); 
     System.out.println("Your order will be ready" + 
     " for pickup in 30 minutes."); 
    } 
} 

エラー:

C:\Users\Meutex\Documents\Netbeans projects>javac PizzaOrder.java 
PizzaOrder.java:23: error: cannot find symbo 

追加のエラー。

C:\Users\Meutex\Documents\Netbeans projects\Pizza>java Pizza.PizzaOrder 
Exception in thread "main" java.lang.NoClassDefFoundError: Pizza/PizzaOrder (wro 
ng name: pizza/PizzaOrder) 
     at java.lang.ClassLoader.defineClass1(Native Method) 
     at java.lang.ClassLoader.defineClass(ClassLoader.java:791) 
     at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:14 
2) 
     at java.net.URLClassLoader.defineClass(URLClassLoader.java:449) 
     at java.net.URLClassLoader.access$100(URLClassLoader.java:71) 
     at java.net.URLClassLoader$1.run(URLClassLoader.java:361) 
     at java.net.URLClassLoader$1.run(URLClassLoader.java:355) 
     at java.security.AccessController.doPrivileged(Native Method) 
     at java.net.URLClassLoader.findClass(URLClassLoader.java:354) 
     at java.lang.ClassLoader.loadClass(ClassLoader.java:423) 
     at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308) 
     at java.lang.ClassLoader.loadClass(ClassLoader.java:356) 
     at sun.launcher.LauncherHelper.checkAndLoadMain(LauncherHelper.java:472) 
+2

のような名前を付けてください。どうしてそんな問題があると思いますか?どのようなエラー/問題がありますか? – Mat

+0

私は私の質問を編集してそれを徹底的に行ってください。 –

+1

質問には関係ありませんが、Javaでは、関数の最初の行ですべての変数を宣言する必要はありません。通常は、変数を最初に使用された場所にできるだけ近いものとして宣言することをお勧めします。 [あなたのコードの 'main()'の変数 'tax'や' cost'などの例) – amit

答えて

2

問題は、両方のファイルをコンパイルしていないことです。 javac PizzaOrder.java Pizza.java

編集可能にする

変更javac PizzaOrder.java:あなたのプログラムを実行するには

は、pizzaというディレクトリにPizzaOrder.classPizza.classを置きます。 pizzaの親ディレクトリからjava pizza.PizzaOrderを実行します。

+0

試行されたファイルとクラスファイルが作成されます。しかし、どのようにコードを実行する? –

+0

実行中にエラーが表示されます。私はこれを私の質問に加えます。それを見てください。 –

+0

ありがとう!これは私のために働いた。 –

0

Pizza.javaとPizzaOrder.javaしたがって、ピザという名前のフォルダ内にある必要があり、パッケージのピザです。 両方のファイルを一緒にコンパイルしていない場合は、PizzaOrder.javaをコンパイルするときにコンパイラがpizza/Pizza.classを見つけることができるようにクラスパスを設定する必要があります。

UPDATE:

はのは、現在のディレクトリがCであるとしましょう:、\ユーザーが(ところで、なぜあなたは、あなたのプロジェクトをコンパイルするためのNetBeansを使用していない)NetBeansプロジェクト\ Meutex \ドキュメント\、そしてあなたのピザディレクトリがその中にありますコマンドは次のようになります。

+0

クラスパスでコンパイルするには? –

+0

更新された回答を見る –

0

以下はプログラムからの出力です。 両方のクラスが「ピザ」と同じフォルダにありますか?

Welcome to Abdul and Diane’s Pizza 
Enter your first name: K 
Pizza Size (inches)  Cost 
     10   £10.99 
     12   £12.99 
     14   £14.99 
     16   £16.99 
What size pizza would you like? 
10, 12, 14, or 16 (enter the number only): 10 
What type of crust do you want? 
(H)Hand-tossed, (T) Thin-crust, or (D) Deep-dish (enter H, T, or D): T 
All pizzas come with cheese. 
Additional toppings are £1.25 each, choose from 
Pepperoni, Sausage, Onion, Mushroom 
Do you want Pepperoni? (Y/N): Y 
Do you want Sausage? (Y/N): Y 
Do you want Onion? (Y/N): Y 
Do you want Mushroom? (Y/N): Y 

Your order is as follows: 
12 inch pizza 
Hand-tossed crust 
Cheese Pepperoni Sausage Onion Mushroom 
The cost of your order is: £17.990000000000002 
The tax is: £1.4392000000000003 
The total due is: £19.4292 
Your order will be ready for pickup in 30 minutes. 

C、 中のようなメソッドの先頭に変数を定義し、小さなにメインクラスを分割していない中括弧-配置のようなあなたのプログラム、 の「スタイル」に関する考慮事項の多くは、あります。メソッドが、初心者のために、それは大丈夫です。

+0

まあ、私はフォルダピザにファイルを追加して両方をコンパイルし、さらに2つのファイルPizza.classとPizzaOrder.classを取得しましたが、このコードをどのように実行するのですか? –

+0

KarlP - このコードはどのように実行しましたか? –

+0

私はEclipseを使いました。しかし、実行可能な 'java'を使ってクラスを開始することは可能です。 'pizza'というフォルダを含むフォルダに' java pizza.PizzaOrder'を実行してください – KarlP

1

パッケージピザのクラスを宣言すると、すべてのコンパイルクラスファイルはフォルダピザ内に移動する必要があります。これを達成するには、以下を実行します。

  1. ファイルをディレクトリに保存します(例:Project)。
  2. コマンドラインでProjectフォルダに移動します。
  3. Projectフォルダ内にフォルダbuildを作成します。
  4. すべての.javaファイルをProjectフォルダにコピーします。
  5. コマンドラインで-dオプションを指定してコードをコンパイルします。実行するjavac -d build *.java フォルダ内に別のフォルダpizzaが作成されています。
  6. アプリケーションを実行するには、cd buildを実行します。
  7. タイプjava pizza.PizzaOrder
-1

クラスは、それは単に拡張子javac Pizza.javaでプログラム名でコンパイルできないパッケージを持っている場合。パッケージ内の特定のクラスを格納するためのディレクトリを作成する必要があります。 javac -d . Pizza.javaコマンドを使用してコンパイルする必要があります。ここでは、.は現在のディレクトリにパッケージのフォルダを作成します。別の場所にフォルダを作成するには、javac -d e:\user Pizza.java

関連する問題