#java #variables #input
#java #переменные #ввод
Вопрос:
Как я могу заставить пользователя ввести H, а код присвоить другой переменной значение H?
Например, если пользователь вводит букву, соответствующую ранее определенной переменной (например, H), как бы
Я помещаю этот ввод рядом с переменной double, чтобы она была равна предыдущей переменной
Это сложно объяснить, но посмотрите комментарий к ошибке, и вы поймете, что я имею в виду
import java.util.Scanner;
class Main {
public static void main(String[] args) {
Scanner inp = new Scanner(System.in);
double H = 1.008;
double Du = 5.303;
double Bz = 8.148;
double Ju = 10.026;
double Nu = 14.289;
double M = 14.759;
double Af = 17.298;
double Et = 18.77;
double Z = 16.515;
double Sl = 20.47;
double Di = 21.435;
double Bo = 23.953 ;
double Az = 28.302;
double P = 32.248;
double Hd = 32.636;
double Tm = 35.085;
double R = 36.501;
double V = 38.853;
double Nv = 41.623;
double A = 42.385;
double T = 44.466;
double Ha = 46.224;
double Jo = 49.014;
double Fg = 50.835;
double K = 51.241;
double Ea = 54.241;
double B = 57.546;
double Lu = 61.416;
double Do = 66.244;
double Qu = 68.081;
double En = 70.787;
double Ka = 72.317;
double W = 75.462;
double Of = 79.264;
double Da = 81.047;
double Re = 84.941;
System.out.print("n What elements");
String elementletter1 = inp.nextLine();
double element1 = elementletter1; // error
System.out.print("n How many");
double element1num = inp.nextDouble();
System.out.print("n What elements");
String elementletter2 = inp.nextLine();
double element2 = elementletter2; // error
System.out.print("n How many");
double element2num = inp.nextDouble();
System.out.print("what");
String what = inp.nextLine();
if (what.equals("moles")) {
System.out.println("How many grams");
double grams = inp.nextDouble();
System.out.println("moles=" (grams / ((element1 * element1num) (element2 * element2num))));
}
else if (what.equals("grams")) {
System.out.println("How many moles");
double moles = inp.nextDouble();
System.out.println("grams=" (moles * ((element1 * element1num) (element2 * element2num))));
}
else if (what.equals("per")) {
System.out.println("grams per mole =" (((element1 * element1num) (element2 * element2num))));
}
}
}
Комментарии:
1. Я надеюсь, вы понимаете, что имя переменной, например Da и Re, предназначено только для использования компилятором и программистом. Фактическая программа не знает об имени переменной и не должна знать.
Ответ №1:
Что вам нужно, так это сохранить символ элемента и его массу на карте:
final Map<String, Double> elementMass = new HashMap<>();
elementMass.put("H", 1.008);
Тогда вы сможете легко преобразовать символ элемента в его массу:
Double element1 = null;
while (element1 == null) {
System.out.print("n Enter an element symbol: ");
final String element1Line = inp.getLine().trim();
element1 = elementMass.get(element1Line);
if (element1 != null) break;
System.out.print("Unrecognized symbol " element1Line);
}
Ответ №2:
double element1 =elementletter1; //error
В этой строке вы присваиваете string
значение double
типа переменной типа. Это неправильно. Далее, согласно вашему коду, вам даже не нужно использовать string
переменную типа для сравнения. Это неправильный способ ввода некоторого значения и ожидания получения совершенно другого типизированного значения. Просто примите значение в double, а затем сравните его или используйте соответствующим образом. Или в вашем случае вы должны использовать для этого структуру данных. Я рекомендую вам использовать Hash Map
. Нравится;
Импортируйте класс HashMap:
import java.util.HashMap;
Попробуйте это
HashMap<String, Double> elementMassesHash = new HashMap<>();
elementMassesHash.put("H", 1.008);
ИЛИ это
HashMap<String, Double> elementMassesHash = new HashMap<String, Double>();
elementMassesHash.put("H", 1.008);