繁体   English   中英

如何在 Java 中重写和压缩

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM