2016-04-04 18 views
0

私はクラスを2つ持っています。クラスAでは、if/else文for forループを持っています。if/他のクラスのループから他の値を返す方法

クラスクラス上の他のたび

public class ClassA extends ClassB { 
    public void checkSuiteInExcelToRun() throws IOException { 
    getResult(); 
    System.out.println("po: "+getResult()); 
    } 
    } 

クラスB

ここで私はループ1つのセル値のために仮定クラスA.NowからのgetResult()を呼び出しています
public class ClassB { 

public String getResult(){ 

     int sheetIndex=wb.getSheetIndex(wsName); 
     int rowNum = "3"; 
      int colNum ="3"; 
     for(int i=1;i<rowNum;i++){ 
       Row Suiterow = ws.getRow(i); 
       for(int j=1;i<colNum;j++){ 
        op =Suiterow.getCell(j).getStringCellValue(); 
       System.out.println("get value:----"+op ); 
       if(op.equalsIgnoreCase("Y")){ 
        System.out.println("op is "+op); 
       break; 
       } 
       else if (op.equalsIgnoreCase("N")) { 
        System.out.println("op is " + op); 
        break; 
       } 
       } 

      } 
      return op; 
} 

すなわちopがあります= yの場合はクラスAにも "Y"を返します。ループ2の場合、セルの値はop = Nであるため、クラスAには "N"が返されます...などです。しかし、現在起こっていることは、最後のループの値だけを返すことです。

は、それが最後の値のみを返している:それが原因で復帰後にのみ1の値を返すされている値「N」

は、私はすべてのループの値は、あなたのクエリにクラスAに

+0

が続いて '地図を返すようにこれを掲示しています、私の投稿question.Iにお答えしました '' Integer'は現在の行を表します。それぞれの反復で 'Map'を記入して返します。 – SomeJavaGuy

+0

配列やリストを返すことはできませんか? – Prashant

+0

しかし、私はループ1を実行し、その値をクラスAに戻してから、ループ2を実行してクラスAに戻り値を返すようにしたかった... – DoubtClear

答えて

0

他の人がそれを

を参照できるように、私は、クラスBの変更のみ

クラスB

public class ClassB { 

public String getResult(){ 

     int sheetIndex=wb.getSheetIndex(wsName); 
     int rowNum = "3"; 
      int colNum ="3"; 
     for(int i=1;i<rowNum;i++){ 
       Row Suiterow = ws.getRow(i); 
       for(int j=1;i<colNum;j++){ 
        op =Suiterow.getCell(j).getStringCellValue(); 
       System.out.println("get value:----"+op ); 
       if(op.equalsIgnoreCase("Y")){ 
        System.out.println("op is "+op); 
       return op; 
       } 
       else if (op.equalsIgnoreCase("N")) { 
        System.out.println("op is " + op); 
        return op; 
       } 
       } 

      } 
      return op; 
} 
0

回答を返す必要がありますしたいです現在のメソッドが実行を停止し、制御が呼び出し元の関数に返されます。

したがって、Arraylistに値を格納し、個々の値の代わりにarrayListを返す必要があります。

何らかの理由でコレクションを使用しないようにしたい場合は、代わりにクラスAの中のforループを使用できます。

+0

私はこれを次のようにすることができます:op.equalsIgnoreCase( "Y ")){ System.out.println(" op is "+ op);戻り値op; 休憩。 } else if(op.equalsIgnoreCase( "N")){ System.out.println( "op is" + op);戻り値op; 休憩。 } – DoubtClear

+0

クラスAのforループを実行している場合は、これを行うことができます。その場合、それぞれのgetResultはcheckSuiteInExcelToRunに値を返します – theLearner

+0

また、その行としてリターンを使用している場合、実行される – theLearner

関連する問題