Обучение и трудоустройство Java-программистов от Junior до Senior

Помогите понять почему при компиляции код не проходит дальше первого if? и вообще правильно ли я написал? )

 
 
 
Сообщения:3
import java.util.HashMap;
import java.util.Scanner;

public class Main {

public static void main(String[] args) {

HashMap<String, String> dctr = new HashMap<String, String>();

System.out.print("Choose one of three statements: add, translate, exit - ");
Scanner input = new Scanner(System.in);
String check = input.nextLine();
String word1;
String word2;

if(check == "add") {

System.out.println("In Russian: ");
input = new Scanner(System.in);
word1 = input.nextLine();

System.out.println("Translation: ");
input = new Scanner(System.in);
word2 = input.nextLine();

dctr.put(word1, word2);

}else if(check == "translate"){

System.out.println("Give a word: ");
input = new Scanner(System.in);
word1 = input.nextLine();

System.out.println("Translation: ");
input = new Scanner(System.in);
word2 = input.nextLine();

dctr.get(word2);

}else if(check == "quit"){

System.out.println("See you!");

}else {
System.out.println("Unknown statement");
}


}

}

И как грамотнее будет написать этот код? )
 
 
Сообщения:241
check == "add"
check == "quit"

здесь идет сравнение ссылок на два объекта типа String логично предположить что они смотрят в разные места
сравнивать нужно по эквивалентности объектов
"add".equals(check)
"quit".equals(check)
 
 
Сообщения:3
tnx
 
 
Сообщения:483
Вот это ты меня на ностальгию пробил :)

На тебе мой вариант, если я правильно понял твою мысль:

package javatalks;

import java.util.HashMap;
import java.util.Scanner;

public class Translator {

	public static void main(String[] args) {

		HashMap<String, String> dctr = new HashMap<String, String>();
		Scanner input = null;
		boolean finished = false;
		try {
			while (!finished) {
				System.out.print("Choose one of three statements: add, translate, exit - ");

				input = new Scanner(System.in);
				String check = input.nextLine();
				String word1;
				String word2;
		
				if("add".equals(check)) {
					System.out.println("In Russian: ");
					word1 = input.nextLine();
			
					System.out.println("Translation: ");
					word2 = input.nextLine();
			
					dctr.put(word1, word2);
				} else if ("translate".equals(check)) {
					System.out.println("Give a word: ");
					word1 = input.nextLine();
			
					String translation = dctr.get(word1);
					System.out.println("Translation for " + word1 + " is " + translation);
				} else if ("quit".equals(check) || "exit".equals(check)) {
					System.out.println("See you!");
					finished = true;
				} else {
					System.out.println("Unknown command.");
				}
			}
		} finally {
			if (input != null) {
				input.close();
			}
		}

	}

}
Изменен:14 окт 2017 00:58
 
 
Сообщения:3
Я не весь код понял ), но все равно спасибо, я разобрался и получилось вот так:
package homework;

import java.util.HashMap;
import java.util.Scanner;

public class Main {

public static void main(String[] args) {

HashMap<String, String> dctr = new HashMap<String, String>();

System.out.print("Choose one of three statements: add, translate, quit - ");
Scanner input = new Scanner(System.in);
String check = input.nextLine();
String word1;
String word2;

while(!"quit".equals(check))
{
if("add".equals(check)) {

System.out.print("In Russian: ");
input = new Scanner(System.in);
word1 = input.nextLine();

System.out.print("Translation: ");
input = new Scanner(System.in);
word2 = input.nextLine();

dctr.put(word1, word2);

System.out.print("Choose one of three statements: add, translate, quit - ");
input = new Scanner(System.in);
check = input.nextLine();

}else if("translate".equals(check)){

System.out.print("Give a word: ");
input = new Scanner(System.in);
word1 = input.nextLine();

System.out.println("In English: " + dctr.get(word1));

System.out.print("Choose one of three statements: add, translate, quit - ");
input = new Scanner(System.in);
check = input.nextLine();

}else{
System.out.println("Unknown statement");
System.out.print("Choose one of three statements: add, translate, quit - ");
input = new Scanner(System.in);
check = input.nextLine();
}
}
System.out.print("See you!");
}
}
preved:
Вот это ты меня на ностальгию пробил :)

На тебе мой вариант, если я правильно понял твою мысль:

package javatalks;

import java.util.HashMap;
import java.util.Scanner;

public class Translator {

	public static void main(String[] args) {

		HashMap<String, String> dctr = new HashMap<String, String>();
		Scanner input = null;
		boolean finished = false;
		try {
			while (!finished) {
				System.out.print("Choose one of three statements: add, translate, exit - ");

				input = new Scanner(System.in);
				String check = input.nextLine();
				String word1;
				String word2;
		
				if("add".equals(check)) {
					System.out.println("In Russian: ");
					word1 = input.nextLine();
			
					System.out.println("Translation: ");
					word2 = input.nextLine();
			
					dctr.put(word1, word2);
				} else if ("translate".equals(check)) {
					System.out.println("Give a word: ");
					word1 = input.nextLine();
			
					String translation = dctr.get(word1);
					System.out.println("Translation for " + word1 + " is " + translation);
				} else if ("quit".equals(check) || "exit".equals(check)) {
					System.out.println("See you!");
					finished = true;
				} else {
					System.out.println("Unknown command.");
				}
			}
		} finally {
			if (input != null) {
				input.close();
			}
		}

	}

}
 
 
Сообщения:483
Используй подсветку кода, очень трудно так читать код.
 
Модераторы:dTern
Сейчас эту тему просматривают:Нет