Я пытаюсь представить эту программу для манипулирования звука, но я получаю эту ошибку:Почему мой код глубокой копии Java говорит мне, что «Задание требует глубокой, а не мелкой копии»?
Assignment requires a deep, not shallow copy. Are you just copying pointers, or copying the contents of the array?...
Я думаю, что я делаю неполную копию на моем общедоступном ничтожном наборе (double[] mySamples
), но я новичок в Java и действительно не знаю, что делать.
public class Sound
{
private double[] temp;
private double[] samples;
public Sound() {
samples = null;
}
public Sound(Sound s) {
int j = 0;
double[] source = s.samples;
double temp[] = new double[source.length];
for(int i = 0; i < source.length; i++) {
temp[j] = source[i];
}
samples = temp;
}
public double[] get() {
return samples;
}
public void set(double[] mySamples) {
if (mySamples == null) {
throw new IllegalArgumentException("samples cannot be null");
} else {
samples = mySamples;
}
}
public void increaseVol(double percent) {
double [] result = new double[samples.length];
for (int i = 0; i < samples.length; i++) {
double reduce = samples[i] * percent;
result[i] = samples[i] + reduce;
}
samples = result;
}
public void wavSave(java.lang.String fileName) {
WavIO.write(fileName, samples);
}
}
Пожалуйста, отредактируйте свой код так, чтобы он показывал разумные углубления. Укажите, какая строка показывает ошибку. –
Это мой первый раз на этом веб-сайте, действительно не знаю, что вы подразумеваете под разумным отступом. Все равно, спасибо за помощь. – user3079090
Вы добавляете пробелы в строки кода, которые должны быть отступом, например, код внутри блоков. Это не имеет никакого отношения к этому сайту и относится к базовому форматированию кода Java. Это важно, потому что чем проще читать код, тем легче вам помочь. Опять же, какая строка показывает вашу ошибку? –