[英]How do I ask user to input a variable?
如何让用户输入 H 并让代码为另一个变量分配 H 的值?
就像如果用户输入一个与先前定义的变量匹配的字母(例如 H)
我将该输入放在双变量旁边以使其等于前一个变量
很难解释,但请查看错误注释,您会明白我的意思
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))));
}
}
}
您需要将元素符号及其质量存储到Map 中:
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);
}
double element1 =elementletter1; //error
在这一行中,您将string
类型值分配给double
类型变量。 那是错误的。 接下来,根据您的代码,您甚至不需要使用string
类型变量进行比较。 这不是输入一些值并期望获得完全不同的类型值的正确方法。 只需取双精度值,然后进行比较或相应地使用它。 或者在您的情况下,您必须为此使用数据结构。 我建议您使用Hash Map
。 喜欢; 导入 HashMap class:
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);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.