所以我对构造函数和整个类的东西有些困惑,但是我试图进行广泛的研究以弄清楚。我正在创建一个名为square的类,以便对数字为正方形的数据文件进行各种操作。我唯一遇到的问题是将int [] []转换为“平方”
import java.util.Arrays;
import java.util.Scanner;
import java.io.*;
public class Square {
int row;
int column;
int[][] actual;
//CONSTRUCTOR:
public Square(){
this.row=0;
this.column=0;
this.actual=null;
}
//SHIFTS LEFT:
public Square shiftLeft(int row) throws FileNotFoundException{
File file = new File("square.txt");
Scanner numberFile = new Scanner(file);
int size = numberFile.nextInt();
//creates arrays
int[][]actualNumbers = new int[size][size];
int[]shiftedArray = new int[size];
String numbers = "";
//creates orginial array from data file
while(numberFile.hasNextLine()){
numbers = numberFile.nextLine();
for (int i=0; i<size;i++){
for(int j=0; j<size;j++){
actualNumbers[i][j] = numberFile.nextInt();
}
}
}
//shifts array
int lastToFirst= 0;
int lastlast=0;
for(int k = 0; k<size-1;k++){
lastToFirst = actualNumbers[row-1][size-1];
lastlast=actualNumbers[row-1][size-2];
shiftedArray[k+1] = actualNumbers[row-1][k];
shiftedArray[0]= lastToFirst;
actualNumbers[row-1][actualNumbers.length-1]=lastlast;
actualNumbers[row-1][k]=shiftedArray[k];
}
return actualNumbers;
}
//SHIFTS DOWN:
public Square shiftDown(int column) throws FileNotFoundException {
File file = new File("square.txt");
Scanner numberFile = new Scanner(file);
int size = numberFile.nextInt();
//creates new array
int[][]actualNumbers = new int[size][size];
int[]shiftedArray = new int[size];
String numbers = "";
//puts data file into array
while(numberFile.hasNextLine()){
numbers = numberFile.nextLine();
for (int i=0; i< size;i++){
for(int j=0; j<size;j++){
actualNumbers[i][j] = numberFile.nextInt();
}
}
}
//shifts array
int startToLast = 0;
int lastlast=0;
for(int k=0; k<size-1; k++){
startToLast = actualNumbers[size-1][column-1];
lastlast=actualNumbers[size-2][column-1];
shiftedArray[k+1] = actualNumbers[k][column-1];
shiftedArray[0]= startToLast;
actualNumbers[actualNumbers.length-1][column-1]=lastlast;
actualNumbers[k][column-1]=shiftedArray[k];
}
return actualNumbers;
}
//FLIPS NUMBERS:
public Square flipSide(int row)throws FileNotFoundException{
File file = new File("square.txt");
Scanner numberFile = new Scanner(file);
int size = numberFile.nextInt();
//creates new array
int[][]actualNumbers = new int[size][size];
String numbers = "";
//puts data file into array
while(numberFile.hasNextLine()){
numbers = numberFile.nextLine();
for (int i=0; i<size;i++){
for(int j=0; j<size;j++){
if(numberFile.hasNextInt()){
actualNumbers[i][j] = numberFile.nextInt();
}
}
}
}
System.out.println(Arrays.deepToString(actualNumbers));
System.out.println();
int[] isolatedArray = new int[size];
int[] flippedArray = new int[size];
for(int i=0; i<size; i++){
isolatedArray[i]=actualNumbers[row-1][i];
}
for(int j=0;j<size;j++){
flippedArray[j]=isolatedArray[isolatedArray.length-j-1];
}
for(int k=0; k<size; k++){
actualNumbers[row-1][k]=flippedArray[k];
}
System.out.println(Arrays.deepToString(actualNumbers));
return actualNumbers;
}
}
答案 0 :(得分:0)
一个int [] []当然还不是Square对象,但是您将其返回,就好像是它一样。例如,您可以将Square的构造函数更改为:
Public Square (int[][] act) {
actual = act;
....
然后,您必须进行一些额外的计算才能使行字段和列字段达到您想要的样子(我不知道)。
但是在shiftDown函数中,您可以使用:
return New Square(actualNumbers);