0

このプログラムをコンパイルしようとすると、「new」という単語を指すエラーが表示されます。carOrder クラスから 2 つのオブジェクトを作成しようとしていますが、問題があります。以前に他のプログラムでこの問題が発生したことがありますが、その理由がわかりません。それが私を殺しています。助けてください!

import java.text.DecimalFormat;
import java.util.Scanner;

public class CarOrder
private String buyer;
private String carType;
private double cost;
private int quantity;
private boolean taxStatus;
private double discountedCost;
private double taxAmount;

// Default Constructor
public void carOrder()
{
}

// Constructor
public void CarOrder(String buy, String car, double cos, int quan, boolean tax)
{
    buyer = buy;
    carType = car;
    cost = cos;
    quantity = quan;
    taxStatus = tax;
}

// Sets the company buying cars
public void setBuyer(String buy)
{
    buyer = buy;
}

// Sets the car type being purchased
public void setCarType(String car)
{
    carType = car;
}

// Sets cost of the cars being purchased
public void setCost(double cos)
{
    cost = cos;
}

// Sets the quantity of cars being purchased
public void setQuantity(int quan)
{
    quantity = quan;
}

// Sets tax status for the cars
public void setTaxStatus(boolean tax)
{
    taxStatus = tax;
}

// Returns name of buyer to user
public String getBuyer()
{
    return buyer;
}

// Returns type of car to user
public String getCarType()
{
    return carType;
}

// Returns cost to user
public double getCost()
{
    return cost;
}

// Returns quantity of cars to user
public int getQuantity()
{
    return quantity;
}

// Returns tax status to user
public boolean getTaxStatus()
{
    return taxStatus;
}

// Returns discounted cost to user
public double getDiscountedCost()
{
    if (quantity > 10)
        if (quantity > 20)
            discountedCost = cost - cost * .10;
        else
            discountedCost = cost - cost * .05;
    else
        discountedCost = cost;

    return discountedCost; 
}

// Returns tax amount to users
public double getTaxAmount()
{
    taxAmount = cost * .0625;
    return taxAmount;
}

public static void main(String[] args)
{
    Scanner keyboard = new Scanner(System.in);
    CarOrder speedy = new CarOrder("Speedy Rental", "Mini Cooper", 22150, 15, true);
    CarOrder zip = new CarOrder("Zip Car Co.", "Ford Fusion", 27495, 6, true);

    System.out.println("Enter first Buyer");
    String buyer1 = keyboard.nextLine();
}

}

4

4 に答える 4

6
public void CarOrder(String buy, String car, double cos, int quan, boolean tax)
{

する必要があります

public CarOrder(String buy, String car, double cos, int quan, boolean tax)
{

コンストラクターには戻り値の型がなく、void さえありません。

現在、CarOrder戻り値の型が void であるため、クラスで名前が付けられたメソッドがあり、カストラクタの規則に違反しています。void を削除すると、クラスと同じ名前であるため、コンストラクターになります。

no-argsaswell を使用したコンストラクターにも同じことが当てはまります。

public void CarOrder()

する必要があります

public  CarOrder()
于 2013-02-24T22:24:10.757 に答える
1

public class CarOrder の直後に「{」がありません... :)

于 2013-02-24T22:24:17.860 に答える
0

戻り値の型を持つコンストラクターは、コンパイラによってメソッドとして扱われます。

于 2013-02-24T22:28:24.300 に答える
0

コンストラクターを宣言しない場合、Java は引数を持たないデフォルトのコンストラクターを提供します。あなたが宣言したようCarOrder(String buy, String car, double cos, int quan, boolean tax)に、デフォルトのコンストラクターはもう作成されていません。というメソッドを作成しましたcarOrder。これはおそらく引数なしでコンストラクタを作成しようとしたものですが、2 つの問題があります。

  • 戻り値の型 (void) があり、コンストラクターにはありません
  • 名前はクラスとは異なります (Java では大文字と小文字が区別されるため、cardOrder は CarOrder と同じではありません)。

電話をかけたい場合はnew CarOrder()、次のコードを追加するだけです。

public CarOrder() {
    //insert your implementation here
}
于 2013-02-24T22:27:46.227 に答える