2016-11-09 2 views
-1

, так что я должен сделать эту проблему, но эти массивы меня смущают, потому что я не уверен, как объединить логические массивы с массивами, а затем правильно их организовать. Я знаю, что это совершенно неправильный код, но я действительно не знаю, что делать. Эти инструкции:Как создать этот 2D-булевский массив?

Объявляет 2D-булево массив размером 5 и 10

заполнить массив с истинным, если случайная величина 0,5 еще ложных

печати количество ложных в массиве

печати массив одна строка для каждой строки

печати индексы массива одна строка в строке

печати только индекс клеток с истинным значением

public class DoubleArray { 

    public static void main(String [] args) { 


    double [][] a = new double[10][15]; 
    int zeroCount = 0;    
    for (int i= 0; i<a.length;i++) 
    {        
     if (Math.random()>0.5) { 

      System.out.println("1" + "\t" + "1"); 
     } 
    else 
    { 

     zeroCount++; // increment 
     System.out.println("0" + "\t" + "0"); 

    } 
} 
System.out.println("Number of zeros is " + zeroCount); 

} 
} 
+0

К сожалению, ваша программа находится далеко от того, что вас просят сделать. Некоторые подсказки: почему вы объявляете двумерный массив 'double', когда он должен быть' boolean'? Почему размер отличается от спецификации? Для работы с 2D-массивом вам обычно понадобятся вложенные циклы. – Henry

+1

Пожалуйста, дайте мне знать, если мой ответ помог вам добиться прогресса (например, принять его); или дайте мне знать, если есть какая-то конкретная деталь, вам понадобится дополнительная помощь. – GhostCat

ответ

0

Очень просто: вы просто перебирать этот массив и присвоить значения каждой ячейки:

boolean booleanData[][] = new boolean[10][5]; 
for(int i = 0; i < booleanData.length; i++) { 
    for(int j = 0; j < booleanData[i].length; j++) { 
    if (if (Math.random()>0.5) { 
     booleanData[i][j] = true; 
    } else { 
     booleanData[i][j] = false; 
     zeroCount++; 
    } 

И вы используете такой же цикл для печати элементов массива или других проверок их содержимого.

Или, используя более простые для каждого цикла:

for (boolean[] row : booleanData) { 
    for (boolean aBool : row) { 
    ... for printing, unfortunately not for assigning values ... 
0

Хотя GhostCat имеет большой ответ уже, я решил просто для удовольствия, чтобы сделать основную версию того, что вы просите. Вот что я придумал:

 boolean[][] a = new boolean[5][10]; 
     int falseCount = 0; 
     String trueIndexes = ""; 

     for (int i = 0; i < a.length; i++){   //For every row... 
      for (int j = 0; j < a[i].length; j++){ //For every column... 

       if (Math.random() > 0.5) {  //Assign values to array 
        a[i][j] = true; 
       } 
       else{ 
        a[i][j] = false; 
        falseCount++;     //For every false value, increase the count 
       } 
      } 
     } 
     System.out.println(falseCount);    //Print number of false values 

     for (int i = 0; i < a.length; i++){ 
      for (int j = 0; j < a[i].length; j++){ 

       System.out.print(a[i][j] + " "); //Print out values 

      } 
      System.out.println(); 
     } 


     for (int i = 0; i < a.length; i++){ 
      for (int j = 0; j < a[i].length; j++){ 

       System.out.print(j + " ");   //Print out indexes 
       if(a[i][j] == true){ 
        trueIndexes += " " + i + "," + j + " "; //Add up true value indexes 
       } 
      } 
      System.out.println(); 
     } 

     System.out.println(trueIndexes);   //Print out true values 

Он печатает:

23 
false false false false true true false false false false 
true false false true true true true false true false 
true true false true false false true true false true 
false false false true true true true false true true 
true true false true false true true true true false 
0 1 2 3 4 5 6 7 8 9 
0 1 2 3 4 5 6 7 8 9 
0 1 2 3 4 5 6 7 8 9 
0 1 2 3 4 5 6 7 8 9 
0 1 2 3 4 5 6 7 8 9 
0,4 0,5 1,0 1,3 1,4 1,5 1,6 1,8 2,0 2,1 2,3 2,6 2,7 2,9 3,3 3,4 3,5 3,6 3,8 3,9 4,0 4,1 4,3 4,5 4,6 4,7 4,8 

Есть много улучшений, которые вы можете сделать, например, объединение двух for петли, используемой для печати элементов (Подсказка: Посмотрите на как реализован trueIndexes, и помните "\n"), но я надеюсь, что этот пример дает вам некоторый контекст, который поможет вам создать свою собственную версию.

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