我的节点实例的变量和对象的内容没有被打印出来
Content from variable and object of my Node Instance isn't getting printed out
年级
程序工作正常,问题是当试图打印字典树时,它不打印单词本身:
+++++西班牙语词典+++++++
请选择一个动作!
- 插入 2.搜索 3.退出
1
请输入一个词:
维亚杰
请输入意思:
旅行
word: <------错误/错误出现在这里
含义:旅程
请选择一个动作!
1。插入2.查找3.退出
节点class
public class Node{
private String word, definition;
private Node left, right;
public Node (String w, String def){
this.word = w;
this.definition = def;
}
public String getW(){ return this.word; }
public String getD(){ return this.definition; }
public Node getL(){ return this.left; }
public Node getR(){ return this.right; }
public void setL(Node l){ this.left = l; }
public void setR(Node r){ this.right = r; }
}
树class
public class Tree{
Node root;
// sorting insert
public void insert(Node newWord){
if ( root == null) root = newWord;
else insert(root, newWord);
}
protected void insert(Node temp, Node newWord){ // Hello, Tree
if (newWord.getW().compareTo(temp.getW()) < 0){
if (temp.getL() == null ) temp.setL(newWord);
else insert(temp.getR(), newWord);
} else{
if (temp.getR() == null) temp.setR(newWord);
else insert(temp.getR(), newWord); // "end", "Tree"
}
}
// Output of the entire tree/ dictionary
public void print(){
print(root);
}
protected void print(Node temp){
if (temp.getL() != null ) print(temp.getL());
System.out.println("Wort: " + temp.getW());
System.out.println("Bedeutung: " + temp.getD());
if (temp.getR() != null ) print(temp.getR());
}
public void search(String word){
search(root, word);
/**
@return this.definition or null
*/
}
protected String search(Node root, String toBeFound){
if ( root == null) return null;
if ( root.getW().compareTo(toBeFound) == 0){
System.out.println("Bedeutung vom gesuchten Wort: " + root.getD());
return root.getD();
}
if (root.getW().compareTo(toBeFound) > 0){
return search(root.getL(), toBeFound);
}
return search(root.getR(), toBeFound);
}
// optional
public void delete(Node word){
}
}
词典class
import java.util.*;
public class Dict{
static Tree t = new Tree();
static int menu;
static String word, definition;
static Scanner s = new Scanner(System.in);
static boolean programRunning = true;
public static void main(String[] args){
System.out.println("+++++Spanisch Woerterbuch+++++++");
while ( programRunning ){
showMenu();
}
s.close();
}
private static void showMenu(){
System.out.println("Bitte waehlen Sie eine Aktion aus!");
System.out.printf("1. Einfuegen\t 2. Suchen\t 3. Beenden");
System.out.println();
menu = s.nextInt();
switch (menu){
case 1:
System.out.println("Bitte geben Sie ein Wort ein:");
word = s.nextLine();
s.nextLine();
System.out.println("Bitte geben Sie die Bedeutung ein:");
definition = s.nextLine();
Node node = new Node(word, definition);
t.insert(node);
t.print();
break;
case 2:
System.out.println("Bitte geben Sie das zu suchende Wort ein:");
s.nextLine();
word = s.nextLine();
t.search(word);
break;
case 3:
programRunning = false;
break;
default:
System.out.println("Ungueltige Eingabe!");
}
}
}
相当简单的问题。
Scanner#nextInt()
不读换行符,而你写
word = s.nextLine();
s.nextLine();
这意味着第一个 nextLine()
将消耗 \n
并输出一个 空字符串 ,而第二个将实际读取您输入的文本,但只是丢弃它。
因此,交换它们
s.nextLine();
word = s.nextLine();
大功告成。还要记住存在调试器,如果可能请尝试使用它们。
年级
程序工作正常,问题是当试图打印字典树时,它不打印单词本身:
+++++西班牙语词典+++++++
请选择一个动作!
- 插入 2.搜索 3.退出
1
请输入一个词:
维亚杰
请输入意思:
旅行
word: <------错误/错误出现在这里
含义:旅程
请选择一个动作!
1。插入2.查找3.退出
节点class
public class Node{
private String word, definition;
private Node left, right;
public Node (String w, String def){
this.word = w;
this.definition = def;
}
public String getW(){ return this.word; }
public String getD(){ return this.definition; }
public Node getL(){ return this.left; }
public Node getR(){ return this.right; }
public void setL(Node l){ this.left = l; }
public void setR(Node r){ this.right = r; }
}
树class
public class Tree{
Node root;
// sorting insert
public void insert(Node newWord){
if ( root == null) root = newWord;
else insert(root, newWord);
}
protected void insert(Node temp, Node newWord){ // Hello, Tree
if (newWord.getW().compareTo(temp.getW()) < 0){
if (temp.getL() == null ) temp.setL(newWord);
else insert(temp.getR(), newWord);
} else{
if (temp.getR() == null) temp.setR(newWord);
else insert(temp.getR(), newWord); // "end", "Tree"
}
}
// Output of the entire tree/ dictionary
public void print(){
print(root);
}
protected void print(Node temp){
if (temp.getL() != null ) print(temp.getL());
System.out.println("Wort: " + temp.getW());
System.out.println("Bedeutung: " + temp.getD());
if (temp.getR() != null ) print(temp.getR());
}
public void search(String word){
search(root, word);
/**
@return this.definition or null
*/
}
protected String search(Node root, String toBeFound){
if ( root == null) return null;
if ( root.getW().compareTo(toBeFound) == 0){
System.out.println("Bedeutung vom gesuchten Wort: " + root.getD());
return root.getD();
}
if (root.getW().compareTo(toBeFound) > 0){
return search(root.getL(), toBeFound);
}
return search(root.getR(), toBeFound);
}
// optional
public void delete(Node word){
}
}
词典class
import java.util.*;
public class Dict{
static Tree t = new Tree();
static int menu;
static String word, definition;
static Scanner s = new Scanner(System.in);
static boolean programRunning = true;
public static void main(String[] args){
System.out.println("+++++Spanisch Woerterbuch+++++++");
while ( programRunning ){
showMenu();
}
s.close();
}
private static void showMenu(){
System.out.println("Bitte waehlen Sie eine Aktion aus!");
System.out.printf("1. Einfuegen\t 2. Suchen\t 3. Beenden");
System.out.println();
menu = s.nextInt();
switch (menu){
case 1:
System.out.println("Bitte geben Sie ein Wort ein:");
word = s.nextLine();
s.nextLine();
System.out.println("Bitte geben Sie die Bedeutung ein:");
definition = s.nextLine();
Node node = new Node(word, definition);
t.insert(node);
t.print();
break;
case 2:
System.out.println("Bitte geben Sie das zu suchende Wort ein:");
s.nextLine();
word = s.nextLine();
t.search(word);
break;
case 3:
programRunning = false;
break;
default:
System.out.println("Ungueltige Eingabe!");
}
}
}
相当简单的问题。
Scanner#nextInt()
不读换行符,而你写
word = s.nextLine();
s.nextLine();
这意味着第一个 nextLine()
将消耗 \n
并输出一个 空字符串 ,而第二个将实际读取您输入的文本,但只是丢弃它。
因此,交换它们
s.nextLine();
word = s.nextLine();
大功告成。还要记住存在调试器,如果可能请尝试使用它们。