質問編集履歴

2 誤字

Neko_ni_koban

Neko_ni_koban score 7

2020/04/17 12:03  投稿

リスト内のオブジェクトと引数を比較し、リストに存在しなければオブジェクトを追加、存在する時は別の処理をする。というプログラムを書いています。
### 前提・実現したいこと
持っている乗り物をリスト化し、新しく買おうとする乗り物を引数で指定しているとします。
引数で指定した乗り物とコレクション内の乗り物を比較し、リストにそれが存在しなければそのまま追加、存在すれば台数をふやす。というプログラムを組みたいです。
ここに質問の内容を詳しく書いてください。
Personクラスにおいて、find~メソッドを使って引数に指定した乗り物がリストにあるかどうかを判定し、ない場合はnullを返し、ある場合はその乗り物を返すようにしたいです。
Testでリストへの追加等は問題なく行えているのですが、同じ乗り物オブジェクトを作成してもfindメソッドでfalseが返ってきてしまうので、その原因、解決法をご教授願いたいです。
Testでリストへの追加等は問題なく行えているのですが、同じ乗り物オブジェクトを作成してもfindメソッドでnullが返ってきてしまうので、その原因、解決法をご教授願いたいです。
### 該当のソースコード
```java
package vehicles;
import java.util.*;
abstract class Vehicle
{
   private String color;
   private String name;
   
   
   public Vehicle(String color,String name)
   {
       if(name == null || color == null)
       {
           throw new IllegalArgumentException();
       }
       this.color = color;
       this.name = name;
   }
   
   public String getColor()
   {
       return this.color;
   }
   public String getName()
   {
       return this.name;
   }
}
   
   
```
```java
package vehicles;
import java.util.*;
public class Car extends Vehicle
{
   private int number;
   
   public Car(String color,String name,int number)
   {
       super(color,name);
       this.number = number;
   }
   
   public int getNumber()
   {
       return this.number;
   }
   public String toString()
   {
       return super.getColor() +""+ super.getName() +""+ this.number;
   }
   
   public boolean equals(Car car)
   {
       if(car == null)
       {
           return false;
       }
       else if(!(car instanceof Car))
       {
           return false;
       }
       else
       {
           if(this.number == car.getNumber() && this.getName().equals(car.getName()))
           {
               return true;
           }
           return false;
       }
   }
   public int hasCode()
   {
       int hash = 17;
       hash *= 31;
       hash += this.number;
       hash *= 31;
       hash += this.getName().hashCode();
       return hash;
   }
}
```
```java
package vehicles;
public class Collection
{
   private Vehicle vehicle;
   private int amount = 0;
   
   public Vehicle getVehicle()
   {
       return this.vehicle;
   }
   public int getAmount()
   {
       return this.amount;
   }
   
   public void setVehicle(Vehicle vehicle)
   {
       this.vehicle = vehicle;
   }
   public void setAmount(int Amount)
   {
       this.amount += amount;
   }
}
```
```java
package vehicles;
import java.util.*;
public class Person
{
   List<Collection> collectionList = new ArrayList<Collection>();
   
   public Collection findCollection(Vehicle vehicle)
   {
       int num = this.collectionList.size();
       if(num == 0)
       {
           return null;
       }
       for(int i = 0; i < num; i ++)
       {
           if(vehicle.equals(this.collectionList.get(i).getVehicle()))
           {
               return collectionList.get(i);
           }
       }
       return null;
   }
       
   public void addCollection(Collection collection)
   {
       if(this.findCollection(collection.getVehicle()) == null)
       {
           this.collectionList.add(collection);
       }
       else
       {
           this.findCollection(collection.getVehicle()).setAmount(1);
       }
   }
}
```
```java
package vehicles;
import java.util.*;
class Test
{
   public static void main(String args[])
   {
       Car car1 = new Car("赤","プリウス",1234);
       Car car2 = new Car("茶","タント",1235);
       Car car3 = new Car("青","ヤリス",1054);
       
       Collection collection1 = new Collection();
       collection1.setVehicle(car1);
       Collection collection2 = new Collection();
       collection2.setVehicle(car2);
       Collection collection3 = new Collection();
       collection3.setVehicle(car3);
       
       Person person1 = new Person();
       person1.addCollection(collection1);
       person1.addCollection(collection2);
       person1.addCollection(collection3);
       System.out.println(person1.collectionList);
       
       Car car4 = new Car("赤","プリウス",1234);
       System.out.println(person1.findCollection(car4));→null
       System.out.println(person1.collectionList.get(0).getVehicle());→赤プリウス1234
       System.out.println((Vehicle)car4);→赤プリウス1234   
   }
}       
```
### 試したこと
上記のようにSystem.out.printで出力しても同様の内容が出るので困ってしまっています。
### 補足情報(FW/ツールのバージョンなど)
初学者のため、質問もわかりづらくコードも冗長になってしまい申し訳ございません。
コードをすっきりとさせるためのアドバイス等もいただけると幸いです。
ここにより詳細な情報を記載してください。
  • Java

    25055 questions

    Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

1 誤字

Neko_ni_koban

Neko_ni_koban score 7

2020/04/17 11:07  投稿

リスト内のオブジェクトと引数を比較し、リストに存在しなければオブジェクトを追加、存在する時は別の処理をする。というプログラムを書いています。
### 前提・実現したいこと
持っている乗り物をリスト化し、新しく買おうとする乗り物を引数で指定しているとします。
引数で指定した乗り物とコレクション内の乗り物を比較し、リストにそれが存在しなければそのまま追加、存在すれば台数をふやす。というプログラムを組みたいです。
ここに質問の内容を詳しく書いてください。
Personクラスにおいて、find~メソッドを使って引数に指定した乗り物がリストにあるかどうかを判定し、ない場合はnullを返し、ある場合はその乗り物を返すようにしたいです。
Testでリストへの追加等は問題なく行えているのですが、同じ乗り物オブジェクトを作成してもfindメソッドでfalseが返ってきてしまうので、その原因、解決法をご教授願いたいです。
### 該当のソースコード
```java
package vehicles;
import java.util.*;
abstract class Vehicle
{
   private String color;
   private String name;
   
   
   public Vehicle(String color,String name)
   {
       if(name == null || color == null)
       {
           throw new IllegalArgumentException();
       }
       this.color = color;
       this.name = name;
   }
   
   public String getColor()
   {
       return this.color;
   }
   public String getName()
   {
       return this.name;
   }
}
   
   
```
```java
package vehicles;
import java.util.*;
public class Car extends Vehicle
{
   private int number;
   
   public Car(String color,String name,int number)
   {
       super(color,name);
       this.number = number;
   }
   
   public int getNumber()
   {
       return this.number;
   }
   public String toString()
   {
       return super.getColor() +""+ super.getName() +""+ this.number;
   }
   
   public boolean equals(Car car)
   {
       if(car == null)
       {
           return false;
       }
       else if(!(car instanceof Car))
       {
           return false;
       }
       else
       {
           if(this.number == car.getNumber() && this.getName().equals(car.getName()))
           {
               return true;
           }
           return false;
       }
   }
   public int hasCode()
   {
       int hash = 17;
       hash *= 31;
       hash += this.number;
       hash *= 31;
       hash += this.getName().hashCode();
       return hash;
   }
}
```
```java
package vehicles;
public class Collection
{
   private Vehicle vehicle;
   private int amount = 0;
   
   public Vehicle getVehicle()
   {
       return this.vehicle;
   }
   public int getAmount()
   {
       return this.amount;
   }
   
   public void setVehicle(Vehicle vehicle)
   {
       this.vehicle = vehicle;
   }
   public void setAmount(int Amount)
   {
       this.amount += amount;
   }
}
```
```java
package vehicles;
import java.util.*;
public class Person
{
   List<Collection> collectionList = new ArrayList<Collection>();
   
   public Collection findCollection(Vehicle vehicle)
   {
       int num = this.collectionList.size();
       if(num == 0)
       {
           return null;
       }
       for(int i = 0; i < num; i ++)
       {
           if(vehicle.equals(this.collectionList.get(i).getVehicle()))
           {
               return collectionList.get(i);
           }
       }
       return null;
   }
       
   public void addCollection(Collection collection)
   {
       if(this.findCollection(collection.getVehicle()) == null)
       {
           this.collectionList.add(collection);
       }
       else
       {
           this.findCollection(collection.getVehicle()).setAmount(1);
       }
   }
}
```
```java
package vehicles;
import java.util.*;
class Test
{
   public static void main(String args[])
   {
       Car car1 = new Car("赤","プリウス",1234);
       Car car2 = new Car("茶","タント",1235);
       Car car3 = new Car("青","ヤリス",1054);
       
       Collection collection1 = new Collection();
       collection1.setVehicle(car1);
       Collection collection2 = new Collection();
       collection2.setVehicle(car2);
       Collection collection3 = new Collection();
       collection3.setVehicle(car3);
       
       Person person1 = new Person();
       person1.addCollection(collection1);
       person1.addCollection(collection2);
       person1.addCollection(collection3);
       System.out.println(person1.collectionList);
       
       Car car4 = new Car("赤","プリウス",1234);
       System.out.println(person1.findCollection(car4));→false
       System.out.println(person1.findCollection(car4));→null
       System.out.println(person1.collectionList.get(0).getVehicle());→赤プリウス1234
       System.out.println((Vehicle)car4);→赤プリウス1234   
   }
}       
```
### 試したこと
上記のようにSystem.out.printで出力しても同様の内容が出るので困ってしまっています。
### 補足情報(FW/ツールのバージョンなど)
初学者のため、質問もわかりづらくコードも冗長になってしまい申し訳ございません。
コードをすっきりとさせるためのアドバイス等もいただけると幸いです。
ここにより詳細な情報を記載してください。
  • Java

    25055 questions

    Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

思考するエンジニアのためのQ&Aサイト「teratail」について詳しく知る