2013-12-01 2 views
0

Работая над некоторыми домашними заданиями, и я хочу сделать свой код более точным, у меня есть набор значений внутри массива, который мне нужно преобразовать в другой набор чисел, внутри массива. Поскольку это для моей домашней работы, я не хочу публиковать то, над чем я работаю, поэтому отправлю пример, не хотел бы, чтобы кто-то выполнял мою работу за меня!Манипулировать индивидуальные числа внутри массива в Java

public class Example{ 
    public Example(){ 
     double rainfall [] = {1.07, 3.25, 4.51, 2.32, 8.28}; //in Inches 
     System.out.print("Enter i for Inches or c for Centimeters "); 
     String scale = in.next(); 

     if(scale.equalsIgnoreCase("C")){ 

      for (double i : rainfall){ 
       rainSum += i; 
      }//End for 


     // Here is where I am lost on what to do in my current program I have it 
     // to where it adds up all the numbers as inches and then converts them into 
     // centimeters, however I need to display every number in centimeters, so I 
     // cannot do it that way. 
     }//End if 
    } 
} 
+0

Итак, что все, что ты хочешь? Сумма элементов массива осадков в cms? Помимо этого вам нужно что-нибудь еще? –

+0

Мне нужно преобразовать количество осадков в дюймах до осадков в сантиметрах, сохранив исходный массив. – user3053524

+0

Вы просто хотите отображать числа в сантиметрах (например, на стандартный вывод), или вы хотите создать новый массив с этими числами? –

ответ

0

Итак, у вас есть статистика осадков за 5 дней. Они предусмотрены в Inches, и вам нужно вывести 2 вещи (на основе того, если пользователь выбирает «C»):

(1). Общее количество осадков в cms.

(2). Ежедневная статистика осадков в cms.

(3). Вам нужно сделать это, сохранив исходный массив в Inches.

Так что я хотел бы предложить вам следующий код:

(1). Вы довольно правильно думаете об этом. Добавьте все элементы и умножьте их на 2.54 , чтобы получить его эквивалент в cms. (2). вызова метода дисплей следующим образом:

void display(double[] a) // This would print individual rainfall stats in cms. 
{ 
for(int i=0;i<a.length;i++) 
{ 
    System.out.println(a[i]*2.54);//Modify formatting as per your requirements 
} 
} 

(3). Они остаются как есть.

Метод-2: Если продолжительность программы получать ввод как «C» больше, затем создать другой массив , который фактически преобразует массив начальных дюймов К массива. Итак, теперь у вас есть два массива:

rainfallInches [] & rainfallCms []

Вы можете использовать их следующий образ:

for(int i=0;i<rainfallInches.length;i++) 
{ 
rainfallCms[i] = rainfallInches[i]*2.54; 
}// This creates new cms array 

Надеется, что это помогает

+0

Что касается вашего первого метода, я полностью понимаю все, кроме отображения void, и почему существует «a», есть ли другой способ выполнить эту же задачу на Java? Помимо этого, я ценю вашу помощь много, огромное спасибо! – user3053524

+0

Нет другого пути. Программирование вращается вокруг одной и той же концепции. «a» здесь фактически является параметром, который передается из нашей программы (когда эта функция вызывается), «a» - это элемент/объект, по которому метод выполняет функции. –

+0

Кроме того, я сделал это неправильно. Тип данных параметра должен быть двойным []. Вы можете вызвать метод show в вашем коде как «display (rainfall);». –

0

Вы сложением всех чисел и преобразования этой суммы (дюймы) в сантиметрах путем умножения на 2,54. Значения в вашем массиве все еще находятся в дюймах, поэтому, чтобы распечатать их все в сантиметрах, просто выполните итерацию по массиву и напечатайте значение, умноженное на 2.54. В качестве альтернативы, если вам нужны преобразованные значения и оригинал, просто скопируйте массив, но умножите каждую запись на 2.54.

+0

Да, я понимаю, что это то, что мне нужно сделать, однако я не знаю, как это сделать. – user3053524

0

Если вам нужно сохранить исходные значения, вам нужно будет создать новый массив и скопировать преобразованные значения в соответствующие позиции в новом массиве.

Если вам не нужно, чтобы сохранить исходное значение использования присвоение элемента массива, например:

private static final double CENTIMETERS_PER_INCH = 2.54d; 
... 
a[1] = a[i] * CENTIMETERS_PER_INCH; 

в петле, чтобы вычислить преобразованные значения. Постоянное определение будет отображаться на уровне класса, а не в цикле.

+0

Если бы я создал новый массив, результат в моем коде заставил бы его выглядеть довольно неряшливым, и я не хочу этого. Я просто хочу сохранить исходный массив, как он есть в дюймах, и преобразовать эти числа внутри массива в сантиметры во внутренней части оператора if. – user3053524

+0

Если вы хотите распечатать преобразованные значения, просто используйте временную переменную внутри цикла или просто распечатайте выражение напрямую. –

0
public class Example{ 

public interface Constants{ 
    /** 
    * Centimer to inch 
    */ 
    static final double CENTIMETER_TO_INCH = 0.393701; 

    /** 
    * Centimer to inch 
    */ 
    static final double INCH_TO_CENTIMETER = 2.54; 
} 

public double[] convertToCentimeter(double[] rainfallInInches){ 
    int length = rainfallInInches.length; 
    double[] rainfallInCentimeters = new double[length]; 
    for(int i = 0; i < length; i++){ 
     rainfallInCentimeters[i] = rainfallInInches[i] * Constants.INCH_TO_CENTIMETER; 
    } 

    return rainfallInCentimeters; 
} 

public double[] convertToInches(double[] rainfallInCentimeter){ 
    int length = rainfallInCentimeter.length; 
    double[] rainfallInInches = new double[length]; 
    for(int i = 0; i < length; i++){ 
     rainfallInInches[i] = rainfallInCentimeter[i] * Constants.CENTIMETER_TO_INCH; 
    } 

    return rainfallInInches; 
} 

public static void main(String[] args){ 
    double rainfall [] = {1.07, 3.25, 4.51, 2.32, 8.28}; //in Inches 

    // Test convert to centimeter 
    Example example = new Example(); 
    double[] convertedArray = example.convertToCentimeter(rainfall); 

    System.out.print("{"); 
    for(int i = 0; i < convertedArray.length; i++){ 
     System.out.print(convertedArray[i] + ", "); 
    } 
    System.out.println("}"); 
} // end main 

} 
Смежные вопросы