如何在Java中将ArrayList更改为2D数组
我应该制作一个程序来测试用户输入的矩阵是一个幻方。基本上,我应该将用户输入放入一个ArrayList,然后将其放入一个2D数组,然后可以使用该数组计算行、列和对角线的和,以查看它们是否具有相同的和。这就是我目前所拥有的。我无法让ArrayList生成2D数组如何在Java中将ArrayList更改为2D数组,java,arrays,arraylist,multidimensional-array,magic-square,Java,Arrays,Arraylist,Multidimensional Array,Magic Square,我应该制作一个程序来测试用户输入的矩阵是一个幻方。基本上,我应该将用户输入放入一个ArrayList,然后将其放入一个2D数组,然后可以使用该数组计算行、列和对角线的和,以查看它们是否具有相同的和。这就是我目前所拥有的。我无法让ArrayList生成2D数组 import java.util.*; class Square { private int[][] square; private ArrayList<Integer> numbers; public in
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));
}
}
}
}
import java.util.*;
阶级广场
{
私人国际[][]广场;
私有数组列表数;
公共国际货币单位;
公众广场()
{
数字=新的ArrayList();
int[][]平方;
numInput=0;
}
公共空白添加(int i)
{
增加(i);
}
}
公共布尔isSquare()
{
numInput=numbers.size();
双平方=Math.sqrt(numInput);
如果(平方!=(整数)平方)
{
System.out.println(“数字构成正方形”);
返回true;
}
其他的
{
System.out.println(“数字不是正方形”);
返回false;
}
}
公共字符串isMagicSquare()
{
对于(int row=0;row我看到两种情况:
用户在开始时给出大小
用户没有
广告1.
无需使用ArrayList
。只需通过以下方式读取输入:
Scanner s = new Scanner(System.in);
int n = s.nextInt();
int[][] array = new int[n][n];
for (int i = 0; i < n; i++) {
for (int j = 0; j < n; j++) {
array[i][j] = s.nextInt();
}
}
Scanner s=新的扫描仪(System.in);
int n=s.nextInt();
int[][]数组=新的int[n][n];
对于(int i=0;i
公元2年
我只是简单地扫描数字,只要用户给出数字。然后检查他是否给出了适当数量的数字。然后转换成整数的平方数组
ArrayList<Integer> list = new ArrayList<>();
Scanner s = new Scanner(System.in);
while (s.hasNextInt()) {
list.add(s.nextInt());
}
int n = list.size();
double sqrt = Math.sqrt(n);
int x = (int) sqrt;
if(Math.pow(sqrt,2) != Math.pow(x,2)) {
//wrong input - it wasn't a square
}
int[][] array = new int[x][x];
int index = 0;
for (int i = 0; i < x; i++) {
for (int j = 0; j < x; j++) {
array[i][j] = array.get(index++);
}
}
ArrayList list=new ArrayList();
扫描仪s=新的扫描仪(System.in);
而(s.hasnetint()){
添加(s.nextInt());
}
int n=list.size();
双sqrt=数学sqrt(n);
int x=(int)sqrt;
if(数学功率(sqrt,2)!=数学功率(x,2)){
//输入错误-它不是正方形
}
int[][]数组=新的int[x][x];
int指数=0;
对于(int i=0;i
显然,您需要注意错误处理。如果您有进一步的问题,请在评论中提问。如果您感兴趣,我将更新我的答案。识别完美正方形时有一个输入错误
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;
}
}
应该是
if (squared == (int) squared) return true;
如果二维数组是完美的正方形,则可以初始化并填充它
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;
}
}
公共字符串isMagicSquare(){
if(isSquare()){
int size=(int)Math.sqrt(numbers.size());
this.square=新整数[大小][大小];
对于(int i=0;i
int[]square;
声明一个新数组。我认为这不是您想要的。您需要在构造函数中初始化this.square
。您会遇到什么问题?如果您不需要int[]
,然后我用一个列表回答了一个问题
Caitlyn,我很想符合你的期望。请你回复我的答案,告诉我答案是好是坏吗?@CaitlynDaly on,而不是写“谢谢”,我们投票并将答案标记为已接受。以防万一,你想加入我强烈建议阅读和阅读的社区。Es特别是第二个问题会教你如何提问,我不需要猜测我们在讨论哪种情况。祝你好运!