この前学校からJavaの課題が出まして、全くわかりません。
<テストクラス>(ファイル名:Test.java)
<フィールド>
なし
<メソッド>
1.メインメソッド
「ここからはテストクラスの流れを書きます」
・アドレスサーチクラスを生成
・アドレスサーチクラスのInitialize()メソッドを呼ぶ
・アドレスサーチクラスのSearchName()メソッドを呼ぶ
・検索結果を表示する
<アドレスサーチクラス>(ファイル名:AddressSearch.java)
<フィールド>
1.アドレス配列(3000個分)
<メソッド>
2.住所録ファイル入力設定
(メソッド名)
public void Initialize()
「ここからはテストクラスの流れを書きます」
・住所録ファイルから1行目入力
・1行を各項目に分解
・アドレスクラスのインスタンスを生成
・アドレスクラスのインスタンスに分解した各項目を設定
・アドレス配列にインスタンスを格納
3.氏名検索
(メソッド名)
public Address SearchName(String name)
「ここからはテストクラスの流れを書きます」
・アドレス配列から氏名を探す
・一致した氏名のインスタンスを戻す
一致しない場合、nullを返す
長くなりました。このような条件でプログラムを作るのは私にはあまりわかりませんでした。googleなどで検索してもあまり良い情報がありません。もしこの問題が解ける方がいらっしゃるなら、ぜひアドバイスやプログラムなどを教えてくれたらありがたいです。
A 回答 (4件)
- 最新から表示
- 回答順に表示
No.4
- 回答日時:
Java 勉強中です。
Test.java、AddressSearcher.java、Address.java、address.dat と
4つ、ファイルがあります。
全角の空白でインデントしてます。
address.dat:
taro, tokyo
hanako, hokkaido
jiro, aichi
sumire, osaka
Address.java:
public class Address implements Comparable<Address> {
private String address = new String();
private String name = new String();
public Address(String name, String address) {
this.name = name;
this.address = address;
}
public boolean equals(Address other) {
return (this.name).equals(other.getName());
}
public String getAddress() {
return address;
}
public String getName() {
return name;
}
@Override
public String toString() {
return "Address [name=" + name + ", address=" + address + "]";
}
public int compareTo(Address other) {
if (this.equals(other)) return 0;
return (this.name).compareTo(other.getName());
}
}
AddressSerch.java:
import java.io.*;
import java.util.*;
public class AddressSearch {
private static final int N = 3000;
private static final String DATA_FILE = "address.dat";
private Address[] data = new Address[N];
public AddressSearch() {
this.data = new Address[N];
for (int i = 0; i < N; i++) data[i] = new Address("","");
}
@SuppressWarnings("resource")
public void initialize() throws FileNotFoundException {
Scanner line = new Scanner(new File(DATA_FILE));
int i = 0;
while (line.hasNextLine()) {
Scanner field = new Scanner(line.nextLine()).useDelimiter("\\s*,\\s*");
String name = field.next();
String address = field.next();
data[i++] = new Address(name, address);
//System.out.println(data[i - 1]);
}
Arrays.sort(data);
}
public Address searchAddress(String name) {
int found = Arrays.binarySearch(data, new Address(name, ""));
if (found < 0 || found >= N) return null;
return data[found];
}
}
Test.java:
import java.io.*;
import java.util.*;
public class Test {
private static void search(AddressSearch searcher, String name) {
System.out.println("Search: " + name);
Object found = searcher.searchAddress(name);
if (found == null) { System.out.println("not found."); return; }
//System.out.println((Address) found);
System.out.println(((Address) found).getAddress());
}
public static void main(String[] args) {
AddressSearch searcher = new AddressSearch();
try { searcher.initialize(); }
catch (FileNotFoundException e) {
System.err.println("address database not found.");
System.exit(1);
}
if (args.length > 0) {
for (int i = 0; i < args.length; i++) { search(searcher, args[i]); }
}
else {
Scanner in = new Scanner(System.in);
System.out.print("? ");
String name = in.next();
search(searcher, name);
}
}
}
No.2
- 回答日時:
>>この前学校からJavaの課題が出まして、全くわかりません。
学校の授業にちゃんと出席されていますか?教科書は読んでいますか?バイトやサークル活動ばかりされてはいませんか?
もし、きちんと授業に出席し、さらに予習や復習をやるとか、授業の後、疑問点を先生に質問したり、ネットで調べたりやっていたのに、こういうレベルの質問をせざるを得ないなら、このJavaの課題は、質問者さんにとって、とても役にたつものだと思います。
つまり、質問者さんがIT業界に向いていない、適性の無いことを教えてくれているものかもしれません。
ただ、課題のJavaを見ると、質問者さんに同情する面もあります。一般的に「C言語のポインターは難しい」とされていて、ポインタ解説をメインとしたCの書籍が何冊も出版されたり、パソコン雑誌の特集記事に何度も取り上げられるくらいの難易度があります。
そして、なぜか「Javaにはポインターは無い」という神話があったりします。しかし、Javaは「ポインタと言う用語が無いだけであり、ポインタしか無い言語である。ポインターを参照と言い換えているだけである。」といってもよい言語です。C言語を理解しC++を使いこなせるレベルの(高度な)プログラマと同等の知識レベルを質問者さんは、いきなりJavaの課題で要求されているといえるかもしれません。
例えれば、中学生時代の一次方程式でつまずいた学生が、数学で微分・積分の課題を前にしたようなものかもしれません。個人的なお薦めは、C言語を勉強したのち、Cのポインターを理解し、さらにC#かC++のクラスを学ばれるといいかもしれません。(ちなみに、私の周囲では、C,C++,C#にVBの仕事はありますが、Javaの仕事はありません。私のいる職場に来るなら、Javaは捨ててもいいです(笑))
P.S.
昨日購入した「More Joel on Software/Joel Spolsky著」という本の中に
「ほとんどのプログラマはエキサイティングな新しいテクノロジを使って仕事をするチャンスが得られることを望んでいる。今日ではそれはPythonとかRuby on Railsといったところだ。3年前はC#で、その前はJavaだった(同書P.29-30)」(注:これは2006/09/07のblogの引用)
という記述がありました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Java java 次の機能を有するメソッドを自クラスに作成し、実装したいです。 機能 名前判定機能 →名前が 3 2022/06/16 16:08
- Java java 飾子を付けること(public static・・・) ・コンソールへの出力処理はmainメ 2 2022/06/16 19:34
- その他(プログラミング・Web制作) どういうプログラムで組みますか?google colabでやってるんですけど、出来る方お願いします。 1 2022/07/17 18:41
- その他(プログラミング・Web制作) どういうプログラムで組みますか?google colabでやってるんですけど、出来る方お願いします。 1 2022/07/06 09:28
- その他(プログラミング・Web制作) pythonのプログラムについての質問です。 1 2023/05/26 10:31
- Java javaの質問です 次の機能を有するメソッド4つを自クラスに作成し、実装したいです 【機能】 足し算 1 2022/06/15 17:49
- Java JavaのSingletonパターンのprivateの持つ意味が分かりません。 5 2022/06/12 10:38
- その他(プログラミング・Web制作) このプログラミングをどう組みますか? Googlecolabでやってるんですが、出来る方お願いします 1 2022/07/13 10:52
- その他(プログラミング・Web制作) pythonでクラスで複数のメソッドを利用する方法 2 2022/04/15 04:17
- PostgreSQL ポストグレにあるExcelファイルを開くには 1 2022/12/13 18:07
関連するカテゴリからQ&Aを探す
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
コマンドライン引数の*(アフ...
-
Javaでlog4jを使ってログ出力を...
-
StringクラスのcompareToメソッド
-
コンストラクタの引数の中のnew?
-
randomで
-
java 継承の問題で分からないと...
-
偶数を表示するプログラムをつ...
-
replaceAllが使えない場合の取...
-
インタフェイス実装と抽象クラ...
-
System.exit()の値を取得したい
-
NoSuchMethodErrorが解決できま...
-
Socketの接続のタイムアウトを...
-
クラスを使った電卓のプログラム
-
コンストラクタ,interface,abst...
-
javaのプログラミングで作るRPG...
-
privateなフィールドは継承され...
-
変数を動的に利用するには?
-
Java プログラム public class ...
-
【初心者です】javaで平均値を...
-
プログラミングの問題です。大...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
変数を動的に利用するには?
-
中カッコ{}だけの記述について
-
プログラミングの問題です。大...
-
Socketの接続のタイムアウトを...
-
System.exit()の値を取得したい
-
コンストラクタの引数の中のnew?
-
インタフェイス実装と抽象クラ...
-
JSP/Servletのパラメータの受け...
-
NoSuchMethodErrorが解決できま...
-
Javaでlog4jを使ってログ出力を...
-
ArrayList でスタックを
-
コマンドライン引数の*(アフ...
-
randomで
-
javaで特定の文字列から特定の...
-
Javaで日本語の出力が文字化けする
-
【初心者です】javaで平均値を...
-
Java プログラム public class ...
-
javaのプログラミングで作るRPG...
-
クラスを使った電卓のプログラム
-
(1)を表示するには
おすすめ情報