Java 使用方法在摄氏度和华氏度之间转换
尝试使用方法进行转换,但在运行它时,它并没有做任何事情,我做错了什么 javaJava 使用方法在摄氏度和华氏度之间转换,java,methods,switch-statement,Java,Methods,Switch Statement,尝试使用方法进行转换,但在运行它时,它并没有做任何事情,我做错了什么 java ... Scanner input = new Scanner(System.in); int selection = 0; switch selection { case 1: int k = input.nextInt(); System.out.println(celsius(k)); break; case 2
...
Scanner input = new Scanner(System.in);
int selection = 0;
switch selection {
case 1:
int k = input.nextInt();
System.out.println(celsius(k));
break;
case 2:
int j = input.nextInt();
System.out.println(fahrenheit(j));
break;
}
...
public static double fahrenheit(double celsius) {
double fahrenheit;
fahrenheit = 9 / 5 * (celsius + 32);
return fahrenheit;
}
public static double celsius(double fahrenheit) {
double celsius;
celsius = 5 / 9 * (fahrenheit - 32);
return celsius;
}
...
plpStyleData.setStatus(ActionResponseStatus.SUCCESS);
return plpStyleData;
}
因为
selection=0
所以开关不会在情况1:
或情况2:
部件中运行。您可能希望将其设置为input.nextInt()
,以便它首先请求输入。这不对:
华氏温度=9/5*(摄氏+32度)
(100C+32)*9/5=237.6F不正确
应该是:
(100C*9/5)+32=212F
(212F-32)*5/9=100C,因此该零件是正确的
212F to C
C = (F - 32) * 5/9.
C = (212 - 32) * 5/9.
C = 180 * 5/9. = 100.
100C to F
F = (C * 9/5.) + 32.
F = (100 * 9/5.) + 32.
F = (180 + 32) = 212
现在来找点乐子。需要以(T-偏移量)*比例的形式获取这两种数据
C = (F - 32) * 5/9
F = (C * 9/5) + 32
5/9F = C + 32*5/9 = C + 160/9.
F = (C + 160/9.)*9/5
温度转换发生器。获取常数并生成温度转换器
BiFunction<Double,Double, DoubleFunction<Double>> temp =
(offset, scale) -> (t)->((int)((t - offset)*scale*1000)/1000.);
DoubleFunction<Double> toCelsius = temp.apply(32., 5./9.);
DoubleFunction<Double> toFahr = temp.apply(-160./9., 9./5.);
System.out.println(toCelsius.apply(212)); //prints 100.
System.out.println(toFahr.apply(37)); //prints 98.6
双功能温度=
(偏移量,刻度)->(t)->(int)((t-偏移量)*刻度*1000)/1000);
DoubleFunction toCelsius=温度应用(32,5./9.);
双功能toFahr=温度应用(-160./9,9./5.);
System.out.println(toCelsius.apply(212))//打印100张。
系统输出打印LN(toFahr.apply(37))//印刷品98.6
“但当运行它时,它什么也不做”您如何运行它?目前,这不是有效的Java代码;但即使在这种情况下,当你试图编译它时,你也会收到一条错误消息,你不能从扫描器中得到用户的选择。您只需将选择设置为0
,并且从不更改它。由于交换机没有0
,因此交换机中的所有代码都不会运行。这就是为什么您应该始终使用默认值
案例。您可以打印出类似“无效选择X”(其中X是选择)的内容,这将为您提供足够的信息来确定问题所在。请注意,9/5将是1,5/9将是0,因为它们是int。您需要使用9.0/5.0强制编译器为您的算术分号使用双精度。适当的压痕是好的。完整、可编译的代码片段很好。