2013-11-29 3 views
0

У меня возникли трудности с пониманием того, как писать этот массив. Мне нужно его распечатать 10x5 (всего 50 элементов) и иметь первые 25 элементов, равных sqrt индекса, в котором он находится, а последние 25 равны 3 * индексу. Да, это домашнее задание, но я не прошу вас сделать это за меня, мне просто нужна помощь! Я получаю ошибки при использовании Math, говоря, что я не могу использовать двойной и двойной массив вместе. Вот то, что я до сих пор:Sqrt и Math in Arrays

public class snhu4 { 
    public static void main(String args[]) { 
     double alpha[][] = new double[10][5]; 
     double[] sum, sum2; 

     for (int count=0; count<=25;count++) { 
      alpha[count]= Math.sqrt(count); 
     } 

     for (int count=26; count<=50;count++) { 
      alpha[count]= count *3; 
     } 

     for (int count=0; count<=50;count++) { 
      System.out.print(alpha[count]); 
     } 
    } 
} 
+0

В чем проблема? Как результат отличается от того, что вы надеялись получить? – Mureinik

+0

Подумайте, где и почему вы получаете ошибки. Ошибка содержит номер строки для справки. – keyser

+0

На самом деле я не получаю никаких результатов. Я не могу понять, как использовать Math с массивами. Это не позволит мне смешивать double [] с двойным. – LearningJava101

ответ

1

Поскольку alpha многомерный массив, вы не можете обратиться к его элементам, как обычный массив.

int myarray[][] = new int[2][2];

В приведенном выше примере, массив myarray многомерна. Если бы я хотел получить второй элемент в первом массиве, я бы получил доступ к нему следующим образом:

int myint = myarray[0][1];

Вы пытаетесь получить доступ к многомерному массиву, используя доступ для обычного массива. Изменение

alpha[count]

в

alpha[0][count]

или аналогичный.

Прочтите here для получения дополнительной информации о многомерных массивах.

0

Вы определили альфа как 2D-массив, и пусть 10 элементов в первом измерении и 5 во втором, а 5x10 - 50 элементов.

При использовании массива для присвоения значений этих элементов, и должен призвать массив с помощью 2 индексов, по одному для каждого измерения:

alpha[i][j] = /*double value*/; //with 0<=i<=9 and 0<=j<=4 

Таким образом, первых 25 элементов, идущих слева направо в порядке измерения будет:
[0to9] [0] и [0to9] [1] и [0to4] [2]
следующий 25 будет
[4to9] [2] и [0to9] [3] и [0to9] [4]

с этого момента я не могу дать вам ответы на ваш h omework, но петли должны выглядеть следующим образом:

int j; 
for(int i = 0; i<25; i++) 
{ 
    j=i/10; //integer division will return 0 for i<10, 1 for 10<i<20, etc.. 
    alpha[i%10][j] = Math.sqrt(i); 
} 

и вы можете выяснить, остальное

+0

фактически 11 элементов в первом измерении и 6 во втором – imulsion

+0

Нет, его 10 и 5. Параметры создания массива принимают количество элементов, которые вы хотите создать. Вы можете использовать int [] array = new int [10] и array.length, чтобы проверить сами – ThaBomb

0

10x5, как представляется, будет выходной ограничение, а не дизайн ограничений.

Вы используете Java, поэтому используйте Java-конструкции, а не C-языковые конструкции; специально сохраняют значения в списке, а не в массиве.

Вот некоторые подсказки:

  1. Список <Integer> valuesList = новый ArrayList <Integer>();
  2. for (int index = 0; index < 25; ++ index)
  3. Integer currentValue = Math.sqrt (index);
  4. valuesList.add (currentValue);
  5. for (int index = 25; index < 50; ++ index)
  6. Integer currentValue = index * 3;
  7. valuesList.add (currentValue)
  8. int count = 1;
  9. for (Integer current: valuesList)
  10. if ((count% 5) == 0) // писать новую строку.
  11. System.out.print (текущий);
  12. ++ count