3

ユーザーが入力した行列が魔方陣であることをテストするプログラムを作成することになっています。基本的に、ユーザー入力を ArrayList に入れ、それを 2D 配列に配置して、行、列、および対角線の合計を計算し、それらが同じ合計であるかどうかを確認するために使用できるようにする必要があります。これは私がこれまでに持っているものです。2D 配列を作成するための ArrayList を取得できません。

import java.util.*;

class Square
{
   private int[][] square;
   private ArrayList<Integer> numbers;
   public int numInput;

   public Square()
   {
      numbers = new ArrayList<Integer>(); 
      int[][] square;
      numInput = 0;
   }

   public void add(int i)
   {
      numbers.add(i);
   }
}

   public boolean isSquare()
   {
      numInput = numbers.size();
      double squared = Math.sqrt(numInput);

      if (squared != (int)squared)
      {
         System.out.println("Numbers make a square");
         return true;
      }
      else
      {
         System.out.println("Numbers do not make a square");
         return false;
      }
   }

      public String isMagicSquare()
      {

         for (int row=0; row<numInput; row++) 
         {
            for (int col=0; col<numInput; col++)
            {
               square[row][col] = number.get(col +( number.size() * row));
            }
         }
      }
}
4

2 に答える 2

0

完全な正方形の識別にタイプミスがあります

そのはず

if (squared == (int) squared) return true;

完全な正方形の場合、2D配列を初期化して埋めることができます

public String isMagicSquare() {
    if (isSquare()) {
        int size = (int) Math.sqrt(numbers.size());
        this.square = new int[size][size];
        for (int i = 0; i < numbers.size(); i++) {
            square[i / size][i % size] = numbers.get(i);
        }
        return Arrays.deepToString(square); // do other op on the array and return appropriate String
    } else {
        return null; 
    }
}
于 2016-11-02T17:39:01.280 に答える