質問編集履歴
4
コードの変更点
title
CHANGED
File without changes
|
body
CHANGED
@@ -32,91 +32,60 @@
|
|
32
32
|
6)a,bどちらでもノード訪問の回数を出力
|
33
33
|
ということです。
|
34
34
|
|
35
|
+
おそらく読み込みまでだけできていると思います。
|
35
36
|
なるべく初心者でも理解可能なコードを待っています。
|
36
37
|
お願いいたします。
|
37
38
|
|
38
39
|
(以下が私ができるところまでやって見たコードになります)
|
39
40
|
|
40
41
|
```java
|
42
|
+
|
43
|
+
import java.io.BufferedReader;
|
44
|
+
import java.io.FileReader;
|
45
|
+
import java.io.IOException;
|
41
46
|
import java.io.*;
|
42
|
-
import java.util.Scanner;
|
43
47
|
import javax.swing.JOptionPane;
|
44
48
|
public class HW5
|
45
49
|
{
|
46
50
|
public static void main(String[] args) throws IOException
|
47
51
|
{
|
48
|
-
File myfile = new File(" names.txt ");
|
49
|
-
Scanner inputFile = new Scanner(myfile); //ここでname.txtから名前を読み込む
|
50
|
-
|
52
|
+
readFile();
|
51
53
|
String name;
|
54
|
+
//名前を入力してもらう
|
52
|
-
name = JOptionPane.showInputDialog("
|
55
|
+
name = JOptionPane.showInputDialog("Enter the name that you are lookig for. ");
|
53
|
-
//わからないところ① ここで得た名前を二分探索木に伝達して、探してもらいたいがどうやって二分木を読み込んだテキストに、実装できるのかわからない
|
54
|
-
Node root;
|
55
|
-
|
56
|
+
BinaryTree(name);
|
57
|
+
System.out.println(name);
|
56
|
-
|
58
|
+
}
|
57
|
-
|
59
|
+
|
58
|
-
private String
|
60
|
+
private static String readFile() //namae.txtから全ての名前と数字を読み込む
|
59
|
-
{
|
60
|
-
//予測① ここに二分木を設置するコードを書く
|
61
|
-
//わからないところ② Nodeクラスで二分技設置は終了しているのか?
|
62
|
-
}
|
63
|
-
|
64
|
-
public String search(name)
|
65
61
|
{
|
66
|
-
|
62
|
+
try{
|
63
|
+
File file = new File("namae.txt");
|
64
|
+
FileReader filereader = new FileReader(file);
|
65
|
+
int ch;
|
66
|
+
}catch(FileNotFoundException e){
|
67
|
+
System.out.println(e);
|
68
|
+
}catch(IOException e){
|
69
|
+
System.out.println(e);
|
70
|
+
}return null;
|
71
|
+
}
|
72
|
+
private static Node BinaryTree(String n){
|
67
|
-
//
|
73
|
+
//ノード作成
|
68
|
-
if(
|
74
|
+
if(name==foundInText)
|
69
75
|
{
|
76
|
+
//ここにif文を使いなまえがあるかどうかを調べる
|
70
|
-
System.out.println(
|
77
|
+
System.out.println((char)ch);
|
71
|
-
exit(0);
|
72
|
-
}
|
73
|
-
else
|
78
|
+
}else
|
74
79
|
{
|
75
|
-
System.out.println(name
|
80
|
+
System.out.println("The name was not found. Enter anotehr name.");
|
76
|
-
|
77
81
|
}
|
78
82
|
}
|
79
|
-
|
83
|
+
|
80
84
|
}
|
81
85
|
|
82
|
-
|
83
86
|
```
|
84
|
-
```ここに言語を入力
|
85
|
-
public class Node
|
86
|
-
{
|
87
|
-
int number;
|
88
|
-
|
87
|
+
file
|
89
|
-
|
88
|
+
"name..txt"
|
90
|
-
Node (int num) //int (number) to hold mumbers of names
|
91
|
-
{
|
92
|
-
number = num;
|
93
|
-
left = null;
|
94
|
-
right = null;
|
95
|
-
}
|
96
|
-
Node(int num, Node leftChild, Node rightChild)
|
97
|
-
{
|
98
|
-
number = num;
|
99
|
-
left = leftChild;
|
100
|
-
right = rightChild;
|
101
|
-
}
|
102
|
-
Node(String n) //String (name) to hold names
|
103
|
-
{
|
104
|
-
name = n;
|
105
|
-
left = null;
|
106
|
-
right = null;
|
107
|
-
}
|
108
|
-
Node(String n, Node leftChild, Node rightChild)
|
109
|
-
{
|
110
|
-
name = n;
|
111
|
-
left = leftChild;
|
112
|
-
right = rightChild;
|
113
|
-
}
|
114
|
-
}
|
115
|
-
|
116
|
-
```
|
117
|
-
名前リスト
|
118
|
-
name.text
|
119
|
-
|
120
89
|
Buffy 0
|
121
90
|
Nathaniel 64
|
122
91
|
Elyse 823
|
@@ -126,4 +95,6 @@
|
|
126
95
|
Ciara 284
|
127
96
|
Flo 0
|
128
97
|
Yamilet 804
|
129
|
-
Clay 402
|
98
|
+
Clay 402
|
99
|
+
|
100
|
+
```
|
3
より詳細を
title
CHANGED
@@ -1,1 +1,1 @@
|
|
1
|
-
二分木を使ってリストから特定の名前を見つけたい
|
1
|
+
二分探索木を使ってリストから特定の名前を見つけたい
|
body
CHANGED
@@ -1,5 +1,9 @@
|
|
1
1
|
java初心者です。
|
2
2
|
|
3
|
+
クラスでは、二分技について学習しました。
|
4
|
+
そして、今出されている課題が以下です。
|
5
|
+
|
6
|
+
---
|
3
7
|
新生児の名前とその名前の人数が載っているテキスト
|
4
8
|
例)太郎 40
|
5
9
|
花子 23
|
@@ -8,7 +12,7 @@
|
|
8
12
|
:
|
9
13
|
etc.
|
10
14
|
があります。それを元に、
|
11
|
-
**入力した名前がリストに入っているかand何人なのかを、二分木を使って調べる**
|
15
|
+
**入力した名前がリストに入っているかand何人なのかを、二分木探索を使って調べる**
|
12
16
|
例)太郎を調べる
|
13
17
|
|
14
18
|
- リストに入っている場合→ 表示
|
@@ -16,11 +20,19 @@
|
|
16
20
|
|
17
21
|
- いない場合 → 終了
|
18
22
|
|
23
|
+
どちらの場合でも、何回ノードを訪問したか数を表示させる
|
19
|
-
|
24
|
+
---
|
25
|
+
つまり整理すると
|
26
|
+
1)テキスト内の名前と人数を読み込む
|
20
|
-
|
27
|
+
2)それらを二分木でソートする
|
21
|
-
|
28
|
+
3)探す名前を入力させる
|
29
|
+
4)ならびかえられた二分木内をinorder, preorder, またはpostorderを使い徘徊
|
30
|
+
5)a.見つけた場合 名前と人数を出力
|
31
|
+
b.みつからなかった場合 終了
|
32
|
+
6)a,bどちらでもノード訪問の回数を出力
|
33
|
+
ということです。
|
22
34
|
|
23
|
-
|
35
|
+
なるべく初心者でも理解可能なコードを待っています。
|
24
36
|
お願いいたします。
|
25
37
|
|
26
38
|
(以下が私ができるところまでやって見たコードになります)
|
@@ -34,20 +46,40 @@
|
|
34
46
|
public static void main(String[] args) throws IOException
|
35
47
|
{
|
36
48
|
File myfile = new File(" names.txt ");
|
37
|
-
Scanner inputFile = new Scanner(myfile);
|
49
|
+
Scanner inputFile = new Scanner(myfile); //ここでname.txtから名前を読み込む
|
50
|
+
BinaryTree(inputFile);
|
38
51
|
String name;
|
39
52
|
name = JOptionPane.showInputDialog("名前を入力してください。 ");
|
40
|
-
|
53
|
+
//わからないところ① ここで得た名前を二分探索木に伝達して、探してもらいたいがどうやって二分木を読み込んだテキストに、実装できるのかわからない
|
41
54
|
Node root;
|
42
55
|
search(name, root);
|
43
56
|
}
|
44
57
|
|
45
|
-
private String
|
58
|
+
private String BinaryTree(Node)
|
46
59
|
{
|
47
|
-
ここに
|
60
|
+
//予測① ここに二分木を設置するコードを書く
|
61
|
+
//わからないところ② Nodeクラスで二分技設置は終了しているのか?
|
48
62
|
}
|
49
63
|
|
64
|
+
public String search(name)
|
65
|
+
{
|
50
66
|
|
67
|
+
//予測② ここでif文を使い二分木内を見回る
|
68
|
+
if( name! == found)
|
69
|
+
{
|
70
|
+
System.out.println("終了")
|
71
|
+
exit(0);
|
72
|
+
}
|
73
|
+
else
|
74
|
+
{
|
75
|
+
System.out.println(name + number); //名前がリスト内にあった場合これが最終的に表示される
|
76
|
+
|
77
|
+
}
|
78
|
+
}
|
79
|
+
|
80
|
+
}
|
81
|
+
|
82
|
+
|
51
83
|
```
|
52
84
|
```ここに言語を入力
|
53
85
|
public class Node
|
2
誤字
title
CHANGED
File without changes
|
body
CHANGED
@@ -11,14 +11,14 @@
|
|
11
11
|
**入力した名前がリストに入っているかand何人なのかを、二分木を使って調べる**
|
12
12
|
例)太郎を調べる
|
13
13
|
|
14
|
-
- リスト
|
14
|
+
- リストに入っている場合→ 表示
|
15
15
|
例)太郎 40
|
16
16
|
|
17
17
|
- いない場合 → 終了
|
18
18
|
|
19
19
|
<質問>
|
20
20
|
- リストをどうやって、二分木で名前をソートするのか
|
21
|
-
-
|
21
|
+
- このコードの続き
|
22
22
|
|
23
23
|
です。なるべく初心者でも理解可能なコードを待っています。
|
24
24
|
お願いいたします。
|
1
質問欄
title
CHANGED
@@ -1,1 +1,1 @@
|
|
1
|
-
二分木を使って
|
1
|
+
二分木を使ってリストから特定の名前を見つけたい
|
body
CHANGED
@@ -18,7 +18,7 @@
|
|
18
18
|
|
19
19
|
<質問>
|
20
20
|
- リストをどうやって、二分木で名前をソートするのか
|
21
|
-
-
|
21
|
+
- リストこのコードの続き
|
22
22
|
|
23
23
|
です。なるべく初心者でも理解可能なコードを待っています。
|
24
24
|
お願いいたします。
|