学校プロジェクトでは、Dogs(名前、品種、年齢、体重)についてユーザから入力を受け取り、それらをArrayListに配置する単純なプログラムを作成することになっています。すべてが動作しているようですが、プログラムをテストするために、メソッドsetUp()にいくつかの犬を追加して、毎回新しい犬を追加しなくても機能をテストできるようにしたいと思います。私はconstuctorセットアップで(犬犬=新しい犬( "アレックス"、 "パグ"、10、10.0)を()書きした場合、私はエラーメッセージを取得:。コンストラクタにオブジェクトを追加するときに問題が発生する
The value of the local variable Dog is not used
を
私が試しました"1"の場合でもコンストラクタを置くと、エラーは発生しませんが、犬はarraylistに追加されませんが、プログラム内に新しい犬を追加することはできます。犬は割り当ての犬コンストラクタ(コードの部分が関連することが切り取られ、輸入心配またはメインない)に追加する必要がある。
class DogReg {
private ArrayList<Dog> allDogs = new ArrayList<Dog>();
private Scanner keyboard = new Scanner(System.in);
private void setUp() {
System.out.print("Hi! Welcome to the Dog register! \n" + "Choose an option between 1-5\n");
System.out.println("1. Register your dog");
System.out.println("2. Increase age");
System.out.println("3. List");
System.out.println("4. Delete");
System.out.println("5. Exit");
}
private void runCommandLoop() {
// Initierar en while-loop som körs under tiden att willRun == true
boolean willRun = true;
while (willRun == true) {
System.out.print("> ");
// Skapar en variabel som konverterar input-sträng till lowerCase
String command = keyboard.next();
switch (command) {
case "1":
// Konstruerar en ny hund in i ArrayList
Dog Dog = new Dog();
// Sparar all input till ArrayList
System.out.print("\nThe name of the dog: ");
Dog.setName(keyboard.next());
System.out.print("The breed of the dog: ");
Dog.setBreed(keyboard.next());
System.out.print("The age of the dog: ");
int age = keyboard.nextInt();
Dog.setAge(age);
System.out.print("The weight of the dog: ");
double weight = keyboard.nextDouble();
Dog.setWeight(weight);
allDogs.add(Dog);
break;
クラス犬{
private String name;
private String breed;
private int age;
private double weight;
public Dog (String name, String breed, int age, double weight){
this.name = name;
this.breed = breed;
this.age = age;
this.weight = weight;
}
public String getName() {
return name;
}
public String getBreed() {
return breed;
}
public int getAge() {
return age;
}
public double getWeight() {
return weight;
}
public void setName(String name) {
this.name = name;
}
public void setBreed(String breed) {
this.breed = breed;
}
public void setAge(int age) {
this.age = age;
}
私は、私が代わりにこのコードを使用している場合)(セットアップで犬を追加することができますが、我々はそれを使用することになっていない:
Dog Dog = new Dog();
Dog.setName("Bosse");
Dog.setBreed("Mops");
int age = 10;
Dog.setAge(age);
double weight = 10;
Dog.setWeight(weight);
allDogs.add(Dog);
は、私は謝罪、それは十分に明らかだホープ文法やスペル、英語は私の母国語ではありません。
「Dog Dog = new Dog();」 - このような名前を付けなくても結局はあなたを混乱させ、バグを導入するでしょう。 。したがって、変数名は小文字で始める必要がある、つまりDog Dog = new Dog();というJava命名規則に従ってください。 - この行で何が起こるか考えてみましょう: 'Dog.setName(keyboard.next());' - 'Dog'はここにありますか?それはあなたが参照しているクラスか変数ですか?コンパイラはちょうど知ることができませんし、後でいつかあなたのコードをもう一度読むときには、おそらくどちらもしません。 – Thomas
[Java命名規則](http://www.oracle.com/technetwork/java/codeconventions-135099.html)を尊重する必要があります。 'Dog dog = new Dog();' – jhamon
エラーの原因について質問するといくつかのコードでは、正確かつ完全なエラーメッセージを投稿し、エラーを引き起こすコードを投稿します。他のコードではありません。 –