JAVAの配列を使った複数人の名前と住所を表示するクラスの作成方法

このQ&Aのポイント
  • JAVAの配列を使って複数人の名前と住所を表示するクラスを作成します。
  • 作成したクラスでは、人名と住所が配列で管理されます。
  • showNameメソッドを使って名前と住所を出力することができます。
回答を見る
  • ベストアンサー

JAVA 配列

JAVAの配列の問題で複数の人間の名前と住所を出力するクラスをつくり表示するというのがあるのですが、わかりません。教えてください。 多分以下のような感じだと思うのですが・・・。 class Chap7_2{ String[] friends,address; Chap7_2(String[] f,String[] ad){ friends=f; address=ad; } void showName(){ System.out.print("My name is"+friends+". Address is"+address+"."); } public static void main(String[]args){ String[] name={"Sayaka Kikumoto","Akiko Hayakawa","Chika Kondo"}; String[] ken={"Mie","Aichi","Ehime"}; Chap7_2 a=new Chap7_2(name[i],ken[i]); for(string i=0;i<a.length;i++); a.showName(); } } }

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

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

  • ベストアンサー
  • yuji
  • ベストアンサー率37% (64/169)
回答No.1

プログラムを作る前に、 何がオブジェクトなのかをよーく考えましょう。 それがオブジェクト思考のプログラミングです。 この問題の場合、何をオブジェクトにすればいいと思いますか?

hinahina0111
質問者

お礼

アドバイスありがとうございました。 yujiさんのアドバイスを読み、それをふまえて教授に教えていただきました。プログラミングはセンスがいるって前前から言われてましたが、最近になって、ようやく実感してます。今はまだ初歩の初歩ですが、SE目指すつもりでがんばります。ありがとうございました。

関連するQ&A

  • Javaの文字列配列について質問です

    父は1月5日生まれです。 母は4月12日生まれです。 私は8月7日生まれです。 というような表示をさせたいのですが、出来ません。 したがソースなのですが何方か教えて頂けないでしょうか class Birth{ String name; int human; int day; Tower (String h, int m, int d){ human = h; mon = m; day = d; } void showBirth (){ System.out.println(human+"は"+mon+"月"+day+"生まれです。"); } } public class Hiniti{ public static void main(String[] args) { String [] name = {"父", "母", "私"}; int [] tuki = {1, 4, 8}; int [] niti = {5, 12, 7}; for (int i; i<name.length; i++){ Birth [] b = new Birth[name.length]; for(int i = 0; i < b; int i++){ b[i] = new Birth(name[i], tuki[i], niti[i]); b[i].showBirth(); } } } }

    • ベストアンサー
    • Java
  • Javaの文字列配列について質問です

    父は1月5日生まれです。 母は4月12日生まれです。 私は8月7日生まれです。 というような表示をさせたいのですが、出来ません。 したがソースなのですが何方か教えて頂けないでしょうか class Birth{ String name; int human; int day; Tower (String h, int m, int d){ human = h; mon = m; day = d; } void showBirth (){ System.out.println(human+"は"+mon+"月"+day+"生まれです。"); } } public class Hiniti{ public static void main(String[] args) { String [] name = {"父", "母", "私"}; int [] tuki = {1, 4, 8}; int [] niti = {5, 12, 7}; for (int i; i<name.length; i++){ Birth [] b = new Birth[name.length]; for(int i = 0; i < b; int i++){ b[i] = new Birth(name[i], tuki[i], niti[i]); b[i].showBirth(); } } } }

  • 配列の変換について

    こんにちは、お世話になります。 次のコードで、どうしてint[] i = {1,2,3};が int[] i = new int[3]; int[0] = 1; int[1] = 2; int[2] = 3; のようになるのか分かりません。お分かりの方よろしくお願いします。 class arr{ public static void main(String[] args){ String[] name = new String[3]; name[0] = "1番目"; name[1] = "2番目"; name[2] = "3番目";      System.out.println("nameの0:" + name[0]); System.out.println("nameの1:" + name[1]); System.out.println("nameの2:" + name[2]); int[] i = {1,2,3}; System.out.println("iの0:" + i[0]); System.out.println("iの1:" + i[1]); System.out.println("iの2:" + i[2]); char c[] = new char[1]; c[0] = 'A'; System.out.println("cの0:" + c[0]); } }

  • Javaのスレッドに関して質問です

    Assistantクラスを使い待機状態と再開を確認できるプログラムの作成 loafとrestartメソッドを設ける workメソッドが呼ばれる度loafを呼び出す Managerクラスを定義 checkメソッドを設け、Assistantをcheckし続ける loaf状態ならrestartさせる (Managerクラスはデーモンスレッド) ということなんですが、いまいちうまくいきません さぼっても復帰してくれません public class Assistant implements Runnable { private String name; private Chore c; public Assistant(String name, Chore c) { this.name = name; this.c = c; } public void run() { work(); } public void work() { while (true) { synchronized (c) { if (c.doEnd()) break; System.out.println(name + " : " + c.digest()); loaf(); } } } public synchronized void loaf() { try { c.wait(); } catch (InterruptedException e) { e.printStackTrace(); } } public synchronized void restart() { c.notify(); } } public class Chore { private String name; private int step; private int id; public Chore(String name) { this.name = name; this.step = this.name.length(); this.id = 0; } public synchronized String digest() { String message = "" + id + name.charAt(id); try { Thread.sleep(500); } catch (InterruptedException ie) { } id++; return message; } public synchronized boolean doEnd() { return id >= step; } } public class Manager extends Thread { private String name; private Assistant a; public Manager(String name) { this.name = name; } public void run() { check(); } public void check() { a.restart(); } } public class Test { public static void main(String[] args) { Chore[] ch = { new Chore("掃除"), new Chore("プリント印刷"), new Chore("出欠データ入力") }; Assistant[] a = { new Assistant("あ", ch[0]), new Assistant("\tい", ch[1]), new Assistant("\t\tう", ch[2] }; Thread[] t = new Thread[a.length]; for (int i = 0; i < t.length; i++) { t[i] = new Thread(a[i]); } for (int i = 0; i < t.length; i++) { t[i].start(); } Manager m = new Manager("監査"); m.setDaemon(true); m.start(); for (int i = 0; i < t.length; i++) { try { t[i].join(); } catch( InterruptedException ie ) { } } }

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

    //Sub.java package prac; class Super{ public void A(){ String address = new String("Osaka"); System.out.println(address); } } public class Sub extends Super{ public void A(){ String address = new String("Kyoto"); System.out.println(address); } public int A(String tmp){ return Integer.parseInt(tmp); } } このプログラムを他のクラスのmain関数から呼び出す場合どのようなコードになりますか?また、間違えているところがあれば合わせて教えてください。

    • ベストアンサー
    • Java
  • java setterとgetterについて

    データをセットしたファイルとは別のファイルからゲットしたいの ですが、できるのでしょうか? できるのでしたら、方法を教えてください。 具体的には下記のような感じです。 (かなり端折っている&あまり理解できていないので  おかしいsrcかもしれませんが、  やりたいことは、A.javaでセットした値をB.javaでゲットしたい  のです・・・。) 宜しくお願いいたします。 ■Data.java public class Data{   private String mojiData;   public Data(String _mojiData){     mojiData = _mojiData;   }   public void setMojiData(String _mojidata){     mojiData = _mojiData;   }   public void getMojiData(){     return mojiData;   } } ■A.java public class A extend JApplet{   public void init(){     Data[] data = new Data[2];     param[0] = a;     param[1] = i;     for(int i=0; i<2; i++){       data[i] = new Data("");       data[i].setMojiData(param);     }   } } ■B.java public class B extend JApplet{   String strData = new String[2];   public void ren(){     Data[] data;     for(int i=0; i<2; i++){       String strData[i] = data[i].getMojiData();     }   } }

    • ベストアンサー
    • Java
  • 二次元配列について

    csvファイルを読み込み 、(コンマ)毎に区切り出力するプログラムを今作っています。 そこで最初に import java.io.*; import java.util.*; public class aaa { public static void main(String aaa[]) throws Exception{ Scanner yomi = new Scanner( new File("C:\\addorres.csv") ); yomi.useDelimiter( "," ); List<String> adorr = new ArrayList<String>(); while( yomi.hasNext() ){ adorr.add( yomi.next() ); } for( String s: adorr ){ System.out.println( s ); } } } と打ちましたそうすると csvに 名前、住所、電話、アドレス、ID、PW 名前、住所、電話、アドレス、ID、PW 名前、住所、電話、アドレス、ID、PW と入っていると表示されるのは 名前 住所 電話 アドレス ID PW 住所 電話 アドレス ID PW 住所 電話 アドレス ID PW となってしまって名前を取り出すことができません。 そこで最初は名前入っていたんだからと安直に二次元配列に変えることにしました。 import java.io.*; import java.util.*; public class aaa { public static void main(String aaa[]) throws Exception{ String[][] ad = new String[9999][9999]; int a = 0,c = 0,d=0; Scanner yomi = new Scanner( new File("C:\\addorres.csv") ); yomi.useDelimiter( "," ); List<String> adorr = new ArrayList<String>(); while( yomi.hasNext() ){ adorr.add( yomi.next() ); } for( String s: adorr ){ if(a==5) { c++; a=0; ad[a][c] = s; d++; }else{ ad[a][c]= s; a++; d++; } } a = 0; c = 0; for (int b=0;b<d;b++) { if(a==5) { c++; a=0; System.out.println(b+":"+ad[a][c]); }else{ System.out.println(b+":"+ad[a][c]); a++; } } } } そこでこの様に打ったんですが実行すると Exception in thread "main" java.lang.OutOfMemoryError: Java heap space at aaa.main(aaa.java:7) と結果がこの様にエラーとして返ってきます。 どなたかこれを解決する方法又は1次元配列でも名前を表示させる方法がわかる方がいましたら お願い致します。

    • ベストアンサー
    • Java
  • javaの問題

    import java.util.Scanner; class test6{ static void printArray(int[] a) { for(int i=0;i<a.length;i++) System.out.print(String.format("%1$6s", (a[i]+" "))); System.out.println(); } static void printArray(int[][] a) { for(int[] i:a) { for(int j:i) System.out.print(String.format("%1$6s",(j+"\t"))); System.out.println(); } } public static void main(String[] args) { int[] a = {12,536,-8,7}; int[][] c = {{32,-1,32,45,67}, {535,99999,2}, {2,5,-123,9}}; printArray(a); printArray(c); } } このプログラムを表示するとこのようになるのですが、 12 536 -8 7 32 -1 32 45 67 535 99999 2 2 5 -123 9 これに一工夫加えて見やすくしたいです。 このような形にするのはどのようにすればよいのでしょうか + + | 32 -1 45 67 | | 535 99999 2 | | 2 5 -123 9 | + +

  • メンバ関数の引数としてオブジェクトの配列をとれる?

    VC++6.0 on W2Kを使っている初心者です。 表題のとおりですが、具体的なプログラムは下のようです。 また、*部分に相当するところもエラーになるのですが、 どのように変えればよいのでしょうか? なお、プログラムの内容そのものには意味はなく 単に動作確認のためのサンプルです。 実行すると、 「How many cats do you create?」 と聞かれるので、数字を入力すると、 Nekoオブジェクトが生成され、i番目の猫にはiという名が付けられます。 そして、「何匹目を鳴かせますか?」と聞かれるので、 数字を入力すると、 「My name is i-th cat.」 と答えられ、さらに、Inuが、 「i-th cat is tasty.」 と答える、という内容になっています。 #include <iostream> #include <string> using namespace std; class Neko { int name; public: Neko(){} Neko(int n):name(n){} void setname(int n){name=n;} int getname(){return name;} void naku(int n) const; }; void Neko::naku(int i) const { cout <<"My name is "<<getname()<<"th cat."<<endl;・・・* } class Inu { public: Inu(){} void naku(int i) const; }; void Inu::naku(int i)const{ cout <<i<<"th cat is tasty."<<endl; } int main() { int i; int num; int temp; Neko *x; Inu y; cout <<"How many cats do you create?"<<endl; cin >>num; x=new Neko[num]; for(i=0;i<num;i++){ x[i].setname(i); } cout <<"何匹目を鳴かせますか?"<<endl; cin >> temp; x[temp].naku(); y.naku(temp); }

  • JAVAのコンストラクタの配列について

    C言語をずっと勉強していて、最近JAVAを勉強しているものですが、卒研で以下の様なデータ構造のテストをする以下のようなプログラムを作りました。 import java.io.*; class Cell { public int statement; public String sentence; public Cell truth; public Cell fault; } class Cells { public String func_name; public int parent; public Cell cell[] = new Cell[100]; } public class architecture { public static void main(String args[]) { Cells cells = new Cells(); cells.parent = 0; cells.func_name = "main"; cells.cell[0].statement = 1; cells.cell[0].sentence = "a = b + c"; System.out.println("parent = "+cells.parent); System.out.println("func_name = "+cells.func_name); System.out.println("statement = "+cells.cell[0].statement); System.out.println("sentence = "+cells.cell[0].sentence); } } コンパイル時にはエラーはないのですが、実行するとエラーが起きます。 そのエラーメッセージがこれです。 Exception in thread "main" java.lang.NullPointerException at architecture.main(architecture.java:22) cellsのcell型の配列がうまく生成されていないようです。 どうすればよいでしょうか? ご教授ください。

専門家に質問してみよう