int [] []无法转换为平方

时间:2018-08-12 08:15:48

标签: java class constructor

所以我对构造函数和整个类的东西有些困惑,但是我试图进行广泛的研究以弄清楚。我正在创建一个名为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;
               }       
    }

1 个答案:

答案 0 :(得分:0)

一个int [] []当然还不是Square对象,但是您将其返回,就好像是它一样。例如,您可以将Square的构造函数更改为:

Public Square (int[][] act) {
    actual = act;
    ....

然后,您必须进行一些额外的计算才能使行字段和列字段达到您想要的样子(我不知道)。

但是在shiftDown函数中,您可以使用:

return New Square(actualNumbers);