2017-03-27 7 views
0

すみません、私はこれが初めてです。 私は現在、BlueJを使用しており、EclipseのYouTubeチュートリアルを行っていますが、私の割り当てにBlueJを使用する必要があります。スーパークラスを持っている場合、クラスのコンストラクタを指定の型に適用できません

GadgetShopというGUIを作成するだけで、私のモバイルとMP3クラスから。スーパークラスであるガジェットというクラスもあります。

私が抱えている問題は、ArrayListsを使用してクラスから情報を収集し、それを私が作成したテキストボックスに表示することです。私は配列リストを作ったが、何が間違っているのか分からない。それは、のクラスガジェットのコンストラクタガジェットは与えられた型には適用できないと言っているからだ。

/** 
* Gadget that is a super class for the Mobile Phone and MP3. 
* Needs input for the price, weight, model and size. 
*/ 
public class Gadget 
{ 
// Variables 
public double price; 
public int weight; 
public String model; 
public String size; 

/** 
* Constructor for objects of class Gadget 
*/ 
public Gadget(double ThePrice, int TheWeight, String TheModel, String TheSize) 
{ 
    // initialise instance variables 
    price = ThePrice; 
    weight = TheWeight; 
    model = TheModel; 
    size = TheSize; 
} 

public double price() 
{ 
    return price; 
} 

public int weight() 
{ 
    return weight; 
} 

public String model() 
{ 
    return model; 
} 

public String size() 
{ 
    return size; 
} 

public void print() 
{ 
    System.out.println("The price of the gadget is " + price + " pounds"); 
    System.out.println("The weight is " + weight + " grams"); 
    System.out.println("The model is " + weight); 
    System.out.println("The size is " + size); 
} 
} 

が、それは実際に私はこの問題を解決することができので、何を意味し、そして何が収集するための推奨方法です:

import java.util.*; 
import java.awt.*; 
import java.awt.event.*; 
import javax.swing.*; 
import java.util.ArrayList; 

public class GadgetShop implements ActionListener 
{ 
private JTextField model, price, weight, size, credit, memory, phoneNo, duration, download, displayNumber; 
private JButton addMobile, addMP3, clear, displayAll; 

//These JTextField's are for the labels 
private JTextField model2, price2, weight2, size2, credit2, memory2, phoneNo2, duration2, download2, displayNumber2; 

private JFrame frame; 
private ArrayList<Gadget> gadgetDetails; 

public GadgetShop() 
{ 
    makeFrame(); 
} 

public static void main (String args[]){ 
    ArrayList<Gadget> GadgetList = new ArrayList<Gadget>(); 
    Gadget Object = new Gadget(); 
    GadgetList.add(Object.Gadget(model, price, weight, size)); 
} 

public void addGadget(Gadget newGadget) 
{ 
    gadgetDetails = new ArrayList<Gadget>(); 
    gadgetDetails.add(newGadget);   
    model.setText("s6"); 

私のガジェットはこれです:ここで

はGadgetShopに必要なコードですボタンをクリックすると、私のクラスの情報がテキストボックスに入力されますか? (私はボタンをクリックして情報を追加する方法を知っていますが、それを取得する最良の方法はわかりません)

読んでいただきありがとうございます。

+0

ようこそ! [ツアー](http://stackoverflow.com/tour)を見て回り、[ヘルプセンター](http://stackoverflow.com/help)、特に[どのように私に質問しますか良い質問?](http://stackoverflow.com/help/how-to-ask)と[ここで私はどのような話題を聞くことができますか?](http://stackoverflow.com/help/on-topic)。 *完全な*エラーメッセージを[追加](http://stackoverflow.com/help/editing)ください。 –

答えて

1

Gadgetのためのあなたのコンストラクタは引数を取ります。コンストラクタは、4つの引数を必要とするため

public Gadget(double ThePrice, int TheWeight, String TheModel, String TheSize) 
{ 
    // initialise instance variables 
    price = ThePrice; 
    weight = TheWeight; 
    model = TheModel; 
    size = TheSize; 
} 

は、あなたは、単にnew Gadget()を呼び出すことはできません。次の2つの方法があります。まず、メインメソッドに引数を指定します。

public static void main (String args[]){ 
    ArrayList<Gadget> GadgetList = new ArrayList<Gadget>(); 
    Gadget object = new Gadget(1.00,20,"a model", "big"); 
    GadgetList.add(object); 
} 

大文字と小文字を区別します。他のソリューションは、あまりにもあなたGadgetクラスで引数を取らない別のコンストラクタを作成します

public Gadget() { 
    //initialize values to default values 
    price = 1.00 
    weight = 21 
    // etc. 
} 

あなたはまだmain方法を少し修正する必要があります。スタックオーバーフローへ

public static void main (String args[]){ 
    ArrayList<Gadget> GadgetList = new ArrayList<Gadget>(); 
    Gadget object = new Gadget(); 
    GadgetList.add(object); 
} 
+0

しかし、あなたが使ったのは: 'Gadget object = new Gadget(1.00,20、" a model "、" big ");' GadgetShopが入力されたものを取得する必要があるので、デフォルト値を持たないことが必要です。私のGadgetShopが与えられた情報を取得する方法はありますか? – Bob

+0

@ Dragon123デフォルト値はどうですか?彼らは上書きされます。 – ostrichofevil

+0

ガジェットショップのボックスにテキストを追加するには、モバイルやMP3から実際に情報を取得するにはどうすればよいですか? – Bob

関連する問題