Java 使用方法在摄氏度和华氏度之间转换

Java 使用方法在摄氏度和华氏度之间转换,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

尝试使用方法进行转换,但在运行它时,它并没有做任何事情,我做错了什么

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:
        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强制编译器为您的算术分号使用双精度。适当的压痕是好的。完整、可编译的代码片段很好。