[英]float type with . and ,
我编写了这段代码:对于每一行,它应该采用权重为0.2,0.4和0.4的这些数字的加权平均值,并且应该在标准输出的单独行上打印出平均值。 例如,对于下面的输入
45.00 67.00 98.00
89.00 23.00 89.00
它应该产生
75.00
62.60
它在我写的时候工作,例如45,6,但是当我写45.6时它没有。 这是我的代码:
import java.util.Scanner;
public class paket {
public static void main (String [] args){
Scanner input=new Scanner(System.in);
float num1,num2,num3,result;
while(input.hasNext()){
num1=input.nextFloat();
num2=input.nextFloat();
num3=input.nextFloat();
result= (float) (num1*0.2+num2*0.4+num3*0.4);
System.out.println("Result is " +result);
}
}
}
在解析数字之前更改您的语言环境:
Locale.setDefault(new Locale("en", "US"));
扫描程序依赖于区域设置来决定如何解释其输入。 正如其他评论所指出的那样,你运行的系统假定','是小数点,而不是'。'
您可以更改扫描仪使用的“输入”区域设置
input.useLocale(Locale.US);
让它将浮动解释为使用'。' 小数点。
您可以将其设置回系统的默认值
input.reset();
解析时应该使用语言环境,这样就可以同时支持。 并且,取决于用户选择的内容:
NumberFormat format = NumberFormat.getInstance(Locale.getDefault());
Number number = format.parse("1,234");
double d = number.doubleValue();
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.