End*_*Egg 6 java integer-division
所以,我是编程的新手,我试图制作一个基本的鼹鼠(化学)计算器只是为了好玩.我没有找到这个问题.如果有人回答,请发给我链接.
这是公式:n = N / Nawhere n = mole和Na = 6.022E23
代码的第一部分抛出错误.只是试图得到一个,用我的给定N除以Na,甚至用6.022而不是6.022E23我得到1000.0作为答案.
Scanner in = new Scanner(System.in);
double Na = 6.022;
System.out.print("What do you want to know? Mol(0) or N(1)? ");
int first = in.nextInt();
if (first == 0){
System.out.print("Insert N: ");
double N = in.nextDouble();
double mol = N/Na;
System.out.print("There are " + mol + " mol in that sample.");
}
else if (first == 1){
System.out.print("Insert mol: ");
double mol = in.nextDouble();
double N = mol*Na;
System.out.print("There are " + N + " molecules, atoms or ions in that sample.");
}
Run Code Online (Sandbox Code Playgroud)
输出0:
What do you want to know? Mol(0) or N(1)? 0
Insert N: 6.022
There are 1000.0 mol in that sample.
Run Code Online (Sandbox Code Playgroud)
输出1:
What do you want to know? Mol(0) or N(1)? 1
Insert mol: 1
There are 6.022 molecules, atoms or ions in that sample.
Run Code Online (Sandbox Code Playgroud)
提前致谢.
既然你正在编写一个小代码,那么对于我可以编写的新编码器的简单建议就是硬编码所以它是:
double mol = N/6.022;
Run Code Online (Sandbox Code Playgroud)
这给你你想要的.错误是因为它正在识别它,因为它将其视为6022而不是6.022.作为千元指标.希望这可以帮助.
如果您不想对值进行硬编码,请添加:
in.useLocale(Locale.US);
Run Code Online (Sandbox Code Playgroud)
在您声明扫描仪的下方.这两种解决方案都可以解决您的问题.