[英]How to rewrite and condense in Java
我是 Java 新手,我正在尝试编写一个函数,该函数将接受输入,计算前 4 个频率,然后输出输入和接下来的 4 个频率(小数点后有 2 个值)。 我目前编写的代码正是这样做的,但是当我提交它进行评分时,它告诉我这是错误的。 (我可以运行它来测试它并且它每次都有效)。 有人可以帮助我浓缩我必须更整洁的内容,或者只是指出我正确的方向? 谢谢
import java.util.Scanner;
public class LabProgram {
public static void main(String[] args) {
Scanner scnr = new Scanner(System.in);
double f0 = scnr.nextDouble();
double r = Math.pow(2, (1.0 / 12.0));
double f1 = f0 * Math.pow(r, 1);
double f2 = f0 * Math.pow(r, 2);
double f3 = f0 * Math.pow(r, 3);
double f4 = f0 * Math.pow(r, 4);
double f5 = f0 * Math.pow(r, 5);
System.out.printf("%.2f", f0);
System.out.print(" ");
System.out.printf("%.2f", f1);
System.out.print(" ");
System.out.printf("%.2f", f2);
System.out.print(" ");
System.out.printf("%.2f", f3);
System.out.print(" ");
System.out.printf("%.2f", f4);
}
}
这是使用数组和 for 循环的完美情况。 由于您有多个相同类型的值,然后对它们进行一些计算,这些计算具有某种类型的模式,您可以使用数组来存储数字, 并使用 for 循环进行计算。
import java.util.Scanner;
public class LabProgram {
public static void main(String[] args) {
Scanner scnr = new Scanner(System.in);
double f0 = scnr.nextDouble();
double r = Math.pow(2, (1.0 / 12.0));
int numberCount = 5; // how many numbers you want to keep, in this case its 4 of them
double[] nums = new double[numberCount]; // using an array to store the numbers, instead of multiple separate variables
for (int i = 0; i < nums.length; i++) {
nums[i] = f0 * Math.pow(r, i + 1);
}
System.out.printf("%.2f", f0);
for (int i = 0; i < nums.length; i++) {
System.out.printf(" %.2f", nums[i]);
}
}
}
这样做的好处是这完全不是硬编码的,因此您可以通过更改变量numberCount
来扩展或缩小要使用的数字数量,而不是多次复制粘贴您的代码。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.