自学普林斯顿CS课程遇问题:reverse方法无效果且报赋值未使用警告
问题分析与解决
核心问题
- 赋值未使用警告:你在main方法中把
reverse返回的结果赋值给samples后,没有对这个变量做任何后续操作(比如播放音频),IDE检测到这个赋值没有实际用途,因此抛出警告。 - reverse看似无效:并非
reverse方法逻辑错误,而是你没有将处理后的音频数据输出播放,导致看不到/听不到效果。
代码修正
下面是修正后的代码,同时调整了amplify方法使其符合注释里“返回新数组”的设计(原方法直接修改了传入的数组,虽能运行但不符合接口描述):
public class audiocollage { // Returns a new array that rescales a[] by a factor of alpha. public static double[] amplify(double[] a, double alpha) { // 创建新数组,不修改原输入数组 double[] amplified = new double[a.length]; for (int i = 0; i < a.length; i++) { amplified[i] = a[i] * alpha; } return amplified; } // Returns a new array that is the reverse of a[]. public static double[] reverse(double[] a) { double[] b = new double[a.length]; for (int i = a.length - 1, j = 0; i >= 0; i--, j++) { b[j] = a[i]; } return b; } // Creates an audio collage and plays it on standard audio. public static void main(String[] args) { double[] samples = StdAudio.read("cow.wav"); double alpha = 2.0; samples = amplify(samples, alpha); samples = reverse(samples); // 添加播放代码,输出处理后的音频 StdAudio.play(samples); } }
关键修改说明
- 给
amplify方法新增了amplified数组,避免修改原输入数组,严格遵循方法注释中“返回新数组”的要求。 - 在main方法末尾添加
StdAudio.play(samples);,让处理后的音频数据播放出来,既验证了reverse的效果,也解决了“赋值未使用”的警告。
内容的提问来源于stack exchange,提问作者At Bay
相关产品推荐
相关产品推荐

