JAVA Array and Exception

このQ&Aのポイント
  • Learn how to create exception classes ClassNotFoundException and ObjectNotFoundException in Java.
  • Understand how to create an array of objects and perform exception handling using the search method.
  • Get insights into the implementation of the Person class and the search function with specific inputs.
回答を見る
  • ベストアンサー

JAVA Array and Exception

内容が説明の仕方が悪くて申し訳ありませんでした。 プロジェクトの内容を書いてみます。 二つのexception classes: ClassNotFoundException ObjectNotFoundException を作る。 main methodのなかで、array of objects AO を作り、 そこに下記の六つのアイテムを含めます。 Class Value Integer 5 Integer 42 String "hello" String "there" Person "Laura" 40 Person "Peter" 35 そして、static method のserachを定義して、 その中で先ほど定義した二つの例外処置を行う。 一例 DがDouble, IがInteger = 25で、 search(AO, D) が例外のClassNotFoundExceptionを発生させる。 search(AO, I) の時はObjectNotFoundExceptionを発生させる。 さらにmain methodの中で、 Integer 5 Person "steve" 5 Double 42 もサーチしなければならない。 NOTE:  String name; int age; を含んだclass person をインプリメントしなければならない。 これがやりたい内容となっています。 一応ここまではトライしたのですが‥。 よろしくお願い致します。 class Assignment5{ public static void main(String[] args){ object[] AO = new object[6] AO[0] = new Integer(5); AO[1] = new Integer(42); AO[2] = new String("Hello"); AO[3] = new String("There"); AO[4] = new Person("Laura", 40); AO[5] = new Person("Peter", 35); }

  • Java
  • 回答数3
  • ありがとう数1

質問者が選んだベストアンサー

  • ベストアンサー
  • ngsvx
  • ベストアンサー率49% (157/315)
回答No.3

>public static Object search(Object[] AO, Object object) { > >for(int i = 0; i < AO.length; i++){ > >if (object instanceof Integer){ >throw new ClassNotFoundException(); >} >} > >} 近いところまで、きていると思いますよ。 要件の意図を考えると、 ・基本的にはオブジェクトを検索したい ・オブジェクトが等価であるという判断をするためにはクラスが同じでなければならない。 ・そのため、クラスさえ同じ物がなければ、「クラスもない」という例外をだして、呼び出し元に伝える。 ということです。 ポイントは2つで、 ・オブジェクトのクラスの取得方法 ・オブジェクトが等価であるという判断の方法 です。 「等価の判断」をしなければならない理由は、 search(AO, new Integer(42)); などのような場合も発見できるようにするためです。 丸投げでないのなら、このヒントで先に進めると思います。 頑張ってください。 わからない箇所があれば補足はします。

bmwm52006
質問者

お礼

親切にありがとうございました! なんとかプログラムを完成させました。

その他の回答 (2)

  • PCFREAK
  • ベストアンサー率51% (417/805)
回答No.2

何が分からないのか具体的に書いて下さい。 「未完成」をそのまま回答者に押しつけているようにしか思えません。 代わりにプログラムを書いて下さるような心優しい方もいるかもしれませんが、とても「質問」というレベルに達していないと思われます。何が分からないのか、何を聞きたいのか不明確です。

bmwm52006
質問者

補足

何が分からないかもわからない‥ っていう感じです。 もっと勉強します。

  • PCFREAK
  • ベストアンサー率51% (417/805)
回答No.1

>一応ここまではトライしたのですが‥。 これで? 全然出来てないじゃないですか。話にならないですよ。 宿題を他人にやらせるようなマネはしないで下さい。 学生なんでしょうが、しっかり勉強しましょう。

bmwm52006
質問者

補足

宿題を他人にやらせているわけではありません。 教えてもらえる方に頼んでいるだけです。 ------------Assignment5.java---------------- public static Object search(Object[] AO, Object object) { for(int i = 0; i < AO.length; i++){ if (object instanceof Integer){ throw new ClassNotFoundException(); } } } //配列をサーチして、二つの例外処置に投げる //未完成です。 class Assignment5{ public static void main(String[] args){ Object[] AO = new Object[6]; AO[0] = new Integer(5); AO[1] = new Integer(42); AO[2] = new String("Hello"); AO[3] = new String("There"); AO[4] = new Person("Laura", 50); AO[5] = new Person("Peter", 35); //未完成です。 } } ----------------Person.java----------------- public class Person{ String myName; int myAge; public void Person(String name, int age){ this.myName = name; this.myAge = age; } public void setName(String name){ this.myName = name; } public String getName(){ return myName; } public void setAge(int age){ this.myAge = age; } public int getAge(){ return myAge; } } ---------ClassNotFoundException.java----------- class ClassNotFoundException extends Exception{ ClassNotFoundException(){ super("Class is not found."); } } ---------ObjectNotFoundException.java---------- class ObjectNotFoundException extends Exception{ ObjectNotFoundException(){ super("Object is not found."); } }

関連するQ&A

  • JAVAプログラム

    こんにちは。お世話になります。 JAVAのプログラミングについての質問です。 メインメソッドに配列オブジェクトを作らなければならないのですが、 次の6つのクラスとバリューを含めなければならないんです。 Class ------- Value Integer ----- 5 Integer ----- 42 String ------ "hello" String ------ "there" Person ------ "Laura" 40 Person ------ "Peter" 35 これはプロジェクトの一部なんですが、この意味すらよく把握できていません。 どなたか説明していただけないしょうか? この後、searchメソッドでサーチして、例外処置を行うというものなんです。 この一部分だけでも教えていただけると幸いです。 よろしくお願い致します。

    • ベストアンサー
    • Java
  • Javaのプログラムについて教えて下さい

    //Sample.java class Sample void methodA(int temp) if(temp == 0) String str = new String("Exception"); Integer.parseInt(str); else if(temp == 1) int[] array = new int[temp]; else Exception exc = new Exception(); throw exc; //SampleMain.java class ExceptionMain public static void main(string[] args) Sample sam = new Sample(); Int temp = Integer.parseInt(args[0]); Sam.method(temp); } } このプログラムの場合、ExceptionMainに新たにコードを加えて、コマンドライン引数が0,1,その他の場合に例外メッセージを出力するプログラムを教えて下さい。

    • ベストアンサー
    • Java
  • java これはオーバーロードすればいいのでは?

    以下のようなコードについて質問です。 class Person { public static int count = 0; public String firstName; public String middleName; public String lastName; public int age; public double height; public double weight; Person(String firstName, String lastName, int age, double height, double weight) { Person.count++; this.firstName = firstName; this.lastName = lastName; this.age = age; this.height = height; this.weight = weight; } Person(String firstName, String middleName, String lastName, int age, double height, double weight) { this(firstName, lastName, age, height, weight); this.middleName = middleName; } public String fullName() { if(middleName == null){ return this.firstName + " " + this.lastName; }else{ return this.firstName + " "+middleName+ ""+ this.lastName; } } fullName() メソッドを条件分岐して、以下のようなメソッドで、ミドルネームを入れるかどうかで、条件分岐するということなのですが… class Main { public static void main(String[] args) { Person person1 = new Person("Kate", "Jones", 27, 1.6, 50.0); person1.printData(); Person person2 = new Person("John", "Christopher", "Smith", 65, 1.75, 80.0); person2.printData(); Person.printCount(); } } これって、引数にfullNameメソッドに何も指定してなくていいのでしょうか。 疑問に感じてしまいました。 また、同じfullNameメソッドという名前のメソッドで引数でmiddleNameの有無だけ変えてオーバーロードしてはだめなのでしょうか。

  • javaの基本的な質問

    下記を実行すると、上から順番にメソッドが実行され、 「Hello Java  Hello Java」 と表示されるような気がしてしまうのですが… なぜ、一度しか表示されないのでしょうか。 class Main { public static void main(String[] args) { hello(); } public static void hello() { System.out.println("Hello Java"); } }

    • ベストアンサー
    • Java
  • javaのpackageのMainとは?

    古い本の初心者プログラムでは、 class Hello{ public static void main(String[] args){ System.out.println("Hello!"); } } だけなんですが、統合環境の Intellij IDEAですと、 package com.company; public class Main { public static void main(String[] args) { // write your code here } } となっていて、mainメソッドを含むクラスのMainを含むpackageが必要になっています。どうしてクラスMainは他のpackageで宣言されてないとならないのですか?

    • ベストアンサー
    • Java
  • java,Exception処理についてです。

    このプログラムからこういうことをしたいのですが。。。 ●RuntimeException(非チェック例外)を使ったエラー処理  現状の実装ではaddCustomerCardを5回までしか呼び出すことができない。  6回目の呼出しではプログラマがやってはいけない例外が発生する。  (たぶんArrayなんとかException)    これを6回目の呼出しであることを明示的にチェックし、自らが生成した  RuntimeExceptionをスローするようにしたいです。   ●Exceptionを使ったエラー処理  RuntimeExceptionをExceptionに変える。このときmainメソッドでも  対応が必要になるので、調査して対応を加えなさい。ただし、mainメソッド  にthrows句をつけづにしたいです。  mainメソッドでは受け取った例外のメッセージを標準出力に表示し、  プログラムを終了する。 public class CustomerCard { String name; int id; public CustomerCard(int id,String name){ this.name = name; this.id = id; } public String getName(){ return this.name; } 12 } public class CustomerManager { public static void main(String[] args){ CustomerManager manager = new CustomerManager(); manager.addCustomerCard(1, "山田一郎"); manager.addCustomerCard(2, "鈴木太郎"); manager.addCustomerCard(3, "田中次郎"); manager.printAllInfo(); } private CustomerCard[] customers = new CustomerCard[5]; private int index = 0; public void addCustomerCard(int id,String name){ customers[index] = new CustomerCard(id,name); index++; } public void printAllInfo() { System.out.print("ID =" + customers[0].id + ","); System.out.println("名前 = " + customers[0].name); System.out.print("ID =" + customers[1].id + ","); System.out.println("名前 = " + customers[1].name); System.out.print("ID =" + customers[2].id + ","); System.out.println("名前 = " + customers[2].name); } } 以下が現在までの処理結果です。 ID =1,名前 =山田一郎 ID =2,名前 =鈴木太郎 ID =3,名前 =田中次郎 以上何卒宜しくお願い致します。

    • ベストアンサー
    • Java
  • java 実行できない

    javaで public class HelloWorld{ public static void main(String[] args){ System.out.println("Hello World!"); } } のようなプログラムをかいて、コンパイルして、実行しようとすると エラー: メイン・メソッドがクラスStringで見つかりません。次のようにメイン・メソッドを定義してください。 public static void main(String[] args) またはJavaFXアプリケーション・クラスはjavafx.application.Applicationを拡張する必要がありま というエラーがでます。コンパイルはできます。jdkは1.8.0_25を使っています。

  • javaの参照渡しの問題

    javaの参照渡しの問題 javaの初心者で問題集で勉強しているのですが、 以下の問題の参照渡しの違いがわかりません。 ------------------------------------------- ソース1 class Samplea{ public void method(){ int b[] = new int[2]; set(b); System.out.println(b[0]); } public void set(int[] b){ b[0] = 30; } } class Sample{ public static void main(String srgs[]){ Samplea x = new Samplea(); x.method(); } } 実行結果 30 ------------------------------------------- ソース2 public class Test{ public static void main(String args[]){ String s1= "Hello"; String s2= "Good-Bye"; change(s1,s2); System.out.println(s1); } static void change(String s1,String s2){ s1 += ",Tom"; s1 = s2; } } 実行結果 Hello ------------------------------------------- 配列とString型は両方とも参照型なので ソース1の実行結果が「30」ならば、 ソース2の実行結果は「Good-Bye」になると思いました。 どなたか教えていただけないでしょうか。 宜しくお願いいたします。

    • ベストアンサー
    • Java
  • Javaについて教えてください!

    sampleパッケージに属するMain.javaとSub.javaがあり、Main.javaのmainはSub.javaのsubメソッドを呼び出して「OK」と表示させるプログラムを教えてください! //Main.java package sample; public class Main{ public static void main(String[] args){ Sub.sub(); }} //Sub.java package sample; public class Sub{ static String str = "OK"; public static void sub(){ System.out.println(str); }} String型の変数strはクラス変数で行いたいのですが、どこを改善すれば良いでしょうか?

    • ベストアンサー
    • Java
  • javaの継承について

    以下のコードがある場合に、想定では「child」が出力されるとおもっていたのですが、 実際は「parent」が出力されます。 3行目でChildをnewしているので16行目のメソッドが呼び出され 画面に「child」が出力されると思っていたのですが、実行結果で その考えが違う事がわかりました。 実行結果から想定すると、3行目で定義している変数sは Parentクラスを指しているため、4行目で呼び出されるメソッドは 9行目になるのかなと思っています。 しかし、Parentクラス及びChildクラスのstaticを外すと 実行結果がchildとなります。 何故staticをつけた場合とつけない場合で実行結果が 異なるのでしょうか。 ■以下コード 1:public class samplexx { 2:  public static void main(String[] args){ 3:    Parent s = new Child(); 4:    System.out.println(s.getName()); 5:  } 6:} 7:class Parent{ 8:  public static String name ="parent"; 9:  public static String getName(){ 10:    return name; 11:  } 12:} 13: 14:class Child extends Parent{ 15:  public static String name="child"; 16:  public static String getName(){ 17:    return name; 18:  } 19:}