繁体   English   中英

如何要求用户输入变量?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM