英文:
How to store a value in variable as a double from user input?
问题
我刚开始学习Java编程,但是我无法弄清楚如何将用户输入的值存储为double类型。
以下是我的代码:
package FirstProject;
import java.util.Scanner;
public class TripPlanner {
public static void main() {
Scanner console = new Scanner(System.in);
System.out.print("在1美元中有多少" + currencySymbol + "? ");
double conversion = console.nextDouble();
}
}
我不明白为什么当我输入例如19.5时,它会给我一个异常错误。我理解我将conversion变量定义为double类型(double conversion),并且我期望用户输入一个double类型(console.nextDouble();)。这是很基础的问题,但是作为从Python转过来的,我无法理解我做错了什么。
英文:
I've only just started learning programming in Java and I cannot figure out how to store a value from user input as a double.
Here's my code:
package FirstProject;
import java.util.Scanner;
public class TripPlanner {
public static void main () {
Scanner console = new Scanner(System.in);
System.out.print("How many " + currencySymbol + " are there in 1 USD? ");
double conversion = console.nextDouble();
}
}
I don't understand why when I enter, for example 19.5, it gives me exception error. My understanding is that I defined the conversion variable as double (double conversion) and I expect the user to enter a double (console.nextDouble();). It's fundamental but coming from Python I can't understand what I'm doing wrong.
答案1
得分: 2
使用像您所做的这样的扫描器有点不受控制。例如,扫描器期望的格式是与区域设置相关的。如果您的系统设置为德语,那么您需要输入3,7
来表示3.7
的双精度值。
如果输入的字符串格式无效,那么可能会引发异常,通常是java.util.InputMismatchException
。您应该捕获异常并以适合您的用例的方式做出反应。
为了更好地控制所使用的区域设置,您应该从控制台中读取一个字符串,然后例如使用java.text.NumberFormat
。请参考此问题。
英文:
Using the Scanner like you did is somewhat uncontrolled. For example, the format the scanner expects is locale-dependent. If your system settings are German, for example, then you need to enter 3,7
for a double value of 3.7
.
If the format of the entered string is invalid, then an exception will be thrown, probably java.util.InputMismatchException
. You should catch the exception and react in a way that's fit to you use case.
To get better control over the locale used, you should instead read a string from the console and then for example use a java.text.NumberFormat
.
See this question.
答案2
得分: 1
@Leisetreter指导我朝着正确的方向。问题出在键盘设置上。我居住在英国,习惯使用点号来表示十进制数。然而,我的键盘设置为波兰程序员模式。在波兰,十进制数使用逗号","来表示。一旦我更改了键盘设置,这个问题就不再存在。我自己可能永远想不到这一点。感谢@Leisetreter。
英文:
@Leisetreter pointed me in the right direction. It was the keyboard settings. I live in the UK and use the conventions of writing a decimal number with a dot. However, my keyboard was set to Polish programmer's. In Poland decimal numbers are written with a ",". Once I changed the settings I did not have that problem anymore. It would have never occurred to me. Thanks @Leisetreter.
答案3
得分: 0
我在你的代码中没有看到任何错误。除了 main 方法。
你应该这样调用她:public static void main (String args[])
。
英文:
I don't see any mistake in your code. Except from main.
The proper way you should call her is public static void main (String args[])
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论