2012-04-06 25 views
0

クラスから2つのクラスを呼び出す必要があります。基本的には呼び出す必要のある2つのクラスの内容は同じですが、クエリでのみ異なりますが、 2番目のクラス。ここ2クラスを呼び出すときにエラーが発生する

Tree tree = new Tree(); 
     return tree.hashtree(dbtoarray.getdata(), dbtoarray.GetDataPrediction()); 

     TreeApplicationSubject treeA = new TreeApplicationSubject();//error sign:unreachable statement 
     return treeA.hashtree(dbtoarray.getdata(), dbtoarray.GetDataPrediction()); 

を呼び出すために私のコードだと、以下の私は、誰かが私を助けることができる場合、私は疑問に思う二、発信者

package Engine; 
import java.util.*; 
/** 
* 
* @author fobia 
*/ 
public class TreeApplicationSubject { 

    double[] correlation; 
    double[] meanArr; 

    public double[] getCorrelation() { 
     return correlation; 
    } 

    public double[] getMeanArr() { 
     return meanArr; 
    } 

    public String[] hashtree(String[][] dataset, String[][] predictiondata) { 
     //======fetch data from database then add 1 morre row for calculation 

     String temp = ""; 

     String[] Means = {"Means", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0"}; 

     //================= combine 3 array ===================================== 
     System.out.println("dataset.length: " + dataset.length + "\npredictiondata.length" + predictiondata.length); 
     int heightofarray = (dataset.length) + (predictiondata.length) + 1; 
     int lengthofarray = (dataset[0].length); 
     System.out.println("heightofarray: " + heightofarray + " lengthofarray: " + lengthofarray); 

     //TextArea 
     temp = temp + "\n" + "heightofarray: " + heightofarray + " lengthofarray: " + lengthofarray; 
     String[][] toCalculate = new String[heightofarray][lengthofarray]; 

     for (int a = 0; a < dataset.length; a++) { 
      for (int b = 0; b < dataset[0].length; b++) { 
       toCalculate[a][b] = dataset[a][b]; 
      } 
     } 
     for (int a = 0; a < predictiondata.length; a++) { 
      for (int b = 0; b < predictiondata[0].length; b++) { 
       toCalculate[(dataset.length) + a][b] = predictiondata[a][b]; 
      } 
     } 
     for (int a = 0; a < Means.length; a++) { 
      toCalculate[heightofarray - 1][a] = Means[a]; 
     } 

     //==========================mulai kalkulasi============================= 
     System.out.println("harusnya muncul String[][]toCalculate"); 
     //TextArea 
     temp = temp + "\n" + ("harusnya muncul String[][]toCalculate"); 

     for (int a = 0; a < toCalculate.length; a++) { 
      for (int b = 0; b < toCalculate[0].length; b++) { 
       System.out.print(toCalculate[a][b] + "\t"); 
      } 
      System.out.println(""); 
     } 


     System.out.println("=============================== hashtree ===================================="); 
     System.out.println("      value in root position\n"); 

     //ngeprint dataset per row serta memecah nilai means, kalau di tree ini adalah root. dlm method ini smua data dimasukkan ke root 
     for (int y = 1; y < toCalculate[0].length; y++) { 
      System.out.println("dataset " + y + " is "); 
      //TextArea 
      temp = temp + "\n" + ("dataset " + y + " is "); 
      //--- 
      double manto = 0; 
      for (int x = 0; x < toCalculate.length - 1; x++) {//biar mulai itung data dr sini 
       manto = manto + Double.parseDouble(toCalculate[x][y]); 
       //nilai array per row 
       System.out.print(toCalculate[x][y]); 


      } 
      System.out.println("\tmeans value: " + (manto/(toCalculate.length - 1))); 
      toCalculate[toCalculate.length - 1][y] = "" + (manto/(toCalculate.length - 1)); 

     } 


     System.out.println("lalallalallaa~"); 
     Print.Print(toCalculate); 
     System.out.println("lalallalala"); 
     AvgDev avgDev = new AvgDev(); 
     // String[][] newCombine = avgDev.FindAvg(toCalculate);//mengcombine array blm dipecah 

     //  temp = temp + "\n" + ("harusnya masih nol 00"); 



     //mulai mengisi 
     Map mapTree = new HashMap(); 

     // int numClusters = 2;// int akar=2--> number of cluster; 
     int treeDeep = 3;//int maxNode = 2; 
     int jumlah = 1;//counter 

     //positioning for childs 
     for (int x = 0; x <= treeDeep; x++) { 
      for (int y = 1; y <= jumlah; y++) { 
       //initialize position. position adalah nomor identitas setiap node 
       String position = x + "." + y;//x itu deep, y itu nomor children 
       mapTree.put(position, null); 
      } 
      jumlah = jumlah * 2;//karena binary tree 
     } 

     //String sementara untuk membangun tree 
     //all ID are turned into String (not string array) to enter the tree 
     String root = ""; 
     for (int i = 1; i < toCalculate.length; i++) { 
      if (i == 1) { 
       root = toCalculate[i][0]; 
      } else { 
       root = root + "," + toCalculate[i][0]; 
      } 
     } 
     mapTree.put("0.1", root);//0.1 root tree identity, since it's root, all comes up here 
     System.out.println("=== Printing map tree ==="); 
     System.out.println("mapTree: "+mapTree); 
     System.out.println("root vale: "+root); 
     jumlah = 1; 
     String[][] data = new String[0][0];//the strings value name is now become data 
     for (int i = 0; i < treeDeep; i++) { 
      for (int j = 1; j <= jumlah; j++) { 
       String IDRoot = (i + "." + j); 
       if (mapTree.get(IDRoot) != null) { 
        if (!mapTree.get(IDRoot).toString().trim().equals("")) { 
         String[] getMap = mapTree.get(IDRoot).toString().split(","); 
         data = new String[getMap.length][toCalculate[0].length]; 
//      for (int k = 0; k < toCalculate[0].length; k++) { 
//       data[0][k] = toCalculate[0][k]; 
//      } 
         for (int k = 0; k < getMap.length; k++) { 
          for (int l = 0; l < toCalculate.length; l++) { 

           // System.out.println("aw>" + getMap[k]+"><"+toCalculate[l][0]); 
           if (getMap[k].equals(toCalculate[l][0])) { 

            // System.out.println("masuk"); 
            data[k][0] = getMap[k]; 
            for (int m = 1; m < toCalculate[0].length; m++) { 
             data[k][m] = toCalculate[l][m]; 
            } 
           } 
          } 
         } 

         System.out.println("data.length>" + data.length); 
         System.out.println(">>" + "" + (i) + "." + (j)); 
         //testing the tree (masuk apa gak) 
         for (int p = 0; p < data.length; p++) { 
          for (int q = 0; q < data[0].length; q++) { 
           System.out.print(data[p][q] + "|"); 
          } 

          System.out.println(); 
         } 
         System.out.println("WUZZZ"); 
         //----- 

         KMeansClustering kmeans = new KMeansClustering();//call KMeans 

         if (data.length > 1) { 


          List valueclust = kmeans.Kmeanz(data); 
          //checking for the cluster value (checking only) 
          for (int p = 0; p < valueclust.size(); p++) { 
           String[] wew = valueclust.get(p).toString().split(";"); 
           for (int q = 0; q < wew.length; q++) { 
            System.out.print(wew[q] + "|"); 
           } 
           System.out.println(); 
          } 
          //---- 

          //inserting to the tree 
          int numb = 1;//counter for cluster numbering (1 or 2) 
          for (int p = 0; p < valueclust.size(); p++) { 
           System.out.println("================================================================="); 
           System.out.println("CLUSTER" + numb); 
           String clusterElement = "";//strings containing the cluster elements of a clusters 
           clusterElement = "" + valueclust.get(p); 
           String judul = "";//child positioning 
           if (numb == 1) { 
            judul = "" + (i + 1) + "." + (j * 2 - 1); 
           } else if (numb == 2) { 
            judul = "" + (i + 1) + "." + (j * 2); 
           } 
           System.out.println("Cluster elements: " + judul + ":" + clusterElement); 
           mapTree.put(judul, clusterElement); 
           numb++; 
          } 
         } 
        } 
       } 
      } 
      jumlah = jumlah * 2; 
     } 
     data = null; 

     /////?????????????????????????????????????????????????????????????????????????? 

     // tambahan baru nih 

     /////?????????????????????????????????????????????????????????????????????????? 

     //untuk menginisialisasi anggota cluster yang didalamnya terdapat dataset Means value 
     String adaMeans = ""; 
     for (int i = 0; i < mapTree.size(); i++) { 
      String mapStr = (String) mapTree.get(treeDeep + "." + i); 

      if (mapStr != null) { 
       String[] mapStrArr = mapStr.split(","); 
       for (int j = 0; j < mapStrArr.length; j++) { 
        if (mapStrArr[j].equals("Means")) { 
         adaMeans = mapStr; 
        } 
       } 
      } 
     } 
     //dibawah ini untuk display anggota cluster terpilih (yg ada data means) 
     System.out.println("Cluster yang ada means di dalamnya: >" + adaMeans); 
     String[] adaMeansArr = adaMeans.split(","); 
     data = new String[adaMeansArr.length ][toCalculate[0].length];//array yg ada data means-nya dimasukkan ke array data 
//  for (int k = 0; k < toCalculate[0].length; k++) { 
//   data[0][k] = toCalculate[0][k];// <-- ini untuk alokasi smua yg di arr jadi ke array data 
//  } 

     //untuk apa ini? 
     for (int k = 0; k < adaMeansArr.length; k++) { 
      for (int l = 0; l < toCalculate.length; l++) { 
       // System.out.println(getMap[k]+"<>"+(arr[l][0])); 
       if (adaMeansArr[k].equals(toCalculate[l][0])) { 
        data[k ][0] = adaMeansArr[k]; 
        for (int m = 1; m < toCalculate[0].length; m++) { 
         data[k ][m] = toCalculate[l][m]; 
        } 
       } 
      } 
     } 
     System.out.println("=============untuk print array yang ada meansnya=================="); 
     for (int i = 0; i < data.length; i++) { 
      for (int j = 0; j < data[0].length; j++) { 
       System.out.print(data[i][j] + "\t"); 
      } 
      System.out.println(""); 
     } 
     System.out.println("==============================*****================================"); 

     //----Untuk memindahkan isi data pada means, average value & SD pada means, average value pada data ke dalam array baru 
     String[][] avgDevArr = avgDev.FindAvg(data);//the data of the choosen cluster exclude means data is located to a new array 
     double[] avgArr = null;//the data of of average value for choosen cluster exclude means data is located to a new array 
     double[] sdArr = null;//the data of of SD for choosen cluster exclude means data is located to a new array 
     //double[] meanArr = null;//the data of Means in the choosen cluster is located to a new array 
     double meanAvg = 0;//initialization 
     double meanSd = 0;//initialization 
     String[][] data2 = new String[data.length - 1][data[0].length - 1];//the new String data 
     //ngisi data2 
     for (int i = 0; i < data.length - 1; i++) { 
      for (int j = 0; j < data[0].length - 1; j++) { 
       data2[i][j] = data[i][j]; 
      } 
     } 
     //ngisi arrmean 
     meanArr = new double[data[0].length - 1]; 
     for (int i = 0; i < data[0].length - 1; i++) { 
      meanArr[i] = Double.parseDouble(data[data.length - 1][i + 1]); 
     } 

     //ngisi arrsd 
     sdArr = new double[avgDevArr.length - 1]; 
     for (int i = 0; i < avgDevArr.length - 1; i++) { 
      sdArr[i] = Double.parseDouble(avgDevArr[i + 1][avgDevArr[0].length - 1]); 
     } 

     //ngisi arravg 
     avgArr = new double[avgDevArr.length - 1]; 
     for (int i = 0; i < avgDevArr.length - 1; i++) { 
      avgArr[i] = Double.parseDouble(avgDevArr[i][avgDevArr[0].length - 2]); 
     } 

     //ngisi avgmean 
     meanAvg = Double.parseDouble(avgDevArr[avgDevArr.length - 1][avgDevArr[0].length - 2]); 
     //ngisi sdmean 
     meanSd = Double.parseDouble(avgDevArr[avgDevArr.length - 1][avgDevArr[0].length - 1]); 


     System.out.println("arrAVG================================================="); 
     for (int i = 0; i < avgArr.length; i++) { 
      System.out.print(avgArr[i] + " | "); 
     } 

     System.out.println(); 
     System.out.println("arrMeans============================================="); 
     for (int i = 0; i < meanArr.length; i++) { 
      System.out.print(meanArr[i] + " | "); 
     } 

     System.out.println(); 
     System.out.println("arrSD================================================"); 
     for (int i = 0; i < sdArr.length; i++) { 
      System.out.print(sdArr[i] + " | "); 
     } 

     System.out.println(); 
     System.out.println("meanAVG==============================================="); 
     System.out.println(meanAvg); 
     System.out.println("meanSD============================================="); 
     System.out.println(meanSd); 
     System.out.println("\n Data2: data of grade from chosen cluster to be inputted=========================="); 
     //move data from choosen cluster into new array to make the calculating easier 
     for (int i = 0; i < data2.length; i++) { 
      for (int j = 0; j < data2[0].length; j++) { 
       System.out.print(data2[i][j] + "\t"); 
      } 
      System.out.println(""); 
     } 
     System.out.println("=== Start calculating for the correlation ==="); 
     double summation = 0;//summation adalah hasil sum dari (Data in Means - Avg Value of dataset Means)(data in each dataset - Avg Value of each dataset) 
     correlation = new double[data2.length];//new array to store the correlation 
     for (int i = 0; i < data2.length; i++) { 
      double jml;//jml adalah jumlah summation per row 
      summation = 0;//smmation adalah jumlah summation keseluruhan, untuk menghitung correlation yang dimasukan ke rumus 

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

       System.out.println("calculating for dataset number " + (i + 1)); 
       System.out.print("summation: " + summation + " | ");//hasilTambah 
       System.out.println("data to be calculating:" + Double.parseDouble(data2[i][j])); 
       System.out.print("avg of array [i]" + avgArr[i] + " | "); 
       System.out.println("meanArr[j]: " + meanArr[j]); 
       System.out.println("meanAvg: " + meanAvg); 

       jml = ((meanArr[j] - meanAvg) * ((Double.parseDouble(data2[i][j])) - avgArr[i])); 
       System.out.println(); 
       System.out.println("summation value per dataset is: " + jml); 
       summation = summation + jml; 
      } 
      int Y; //Y adalah faktor pembagi, max value is the number of dataset - 1 
      Y = data2[0].length - 1; 
      System.out.println("\nY is: " + Y); 

      double corrtemp = summation/sdArr[i] * meanSd * Y;//correlation sementara 
      System.out.println(" The correlation for Means into this dataset= summation/Y "); 
      System.out.println(summation + "/" + sdArr[i] * meanSd * Y + " = " + corrtemp); 

      //mengisi hasil perhitungan correlation ke aray baru bernama correlation 
      correlation[i] = corrtemp; 
      System.out.println(); 
      System.out.println("---"); 
     } 
     System.out.println(); 

     for (int i = 0; i < correlation.length; i++) { 
      System.out.print("The correlation remains: " + correlation[i] + " | "); 
     } 
     System.out.println("\n=========================*****============================="); 

     /////?????????????????????????????????????????????????????????????????????????? 

     // Calculating correlation finished 
     String[] i = Prediction.computing(meanAvg, meanSd, data, correlation, meanArr, sdArr, avgArr); 
     int x = i.length; 

     for (int r = 0; r < x; r++) { 
      temp = temp + "\n" + i[r]; 
     } 
     /////?????????????????????????????????????????????????????????????????????????? 
     String[] y = new String[1]; 
     y[0] = temp; 
     return y; 
    } 
} 

に呼び出す必要がクラスです。ありがとう

+0

プログラミングに関する基本的な知識を得ることができます。 –

答えて

3

エラーが表示されるので、という表現は、前の行のmothodからすでにreturnになっているため、到達できません。

return javaのメソッドから2つの値[または2つ]を設定することはできません。

+0

ああ私はそれを動作させるために何かできることはありますか?ありがとうございました – charcoalite

0

ああ私の神様...あなたはすでに2行目でコントロールを返します.3行目はどのように実行されますか?if(){} else{}状態に置くべきです。以下のように

if("Some_condition){ 
    Tree tree = new Tree(); 
    return tree.hashtree(dbtoarray.getdata(), dbtoarray.GetDataPrediction()); 
    } 
    else{ 
    TreeApplicationSubject treeA = new TreeApplicationSubject(); 
    return treeA.hashtree(dbtoarray.getdata(), dbtoarray.GetDataPrediction()); 
    } 
関連する問題