2017-05-08 3 views
1

Ich habe einige Werte in der Datenbank. Ich hole es und vergleiche es nach
meine Notwendigkeit, aber Problem ist es vergleicht es mit dem letzten Wert der Liste.
Wenn ich meine Werte im Vergleich zu der Bedingung, die Schleife sollte brechen und kommen mit dem Bruch in der Schleife, wenn Bedingung, aber es funktioniert nicht.
wie die Daten sind.Break-Anweisung funktioniert nicht um Loop Stop zu machen

serial_number=1 
range_one_start=1.00 to range_one_end=1.10 
range_two_start=20.00 to range_two_end=20.40 
rate=1.00 
------ 
serial_number=2 
range_one_start=1.11 to range_one_end=1.20 
range_two_start=20.00 to range_two_end=20.50 
rate=2.00 
------ 
serial_number=3 
range_one_start=1.21 to range_one_end=1.30 
range_two_start=20.00 to range_two_end=20.50 
rate=3.00 

usw. i-2-Daten von serial_number zu bekommen und so werde ich Daten übergeben
Range_one = 1,12 und Range_two = 20 so in ans werde ich Rate 2,00 erhalten.
so das wird, wenn die Bedingung wie sein unter

if(1.12 >= 1.11 && 1.12 <= 1.20 && 20 >= 20.00 && 20 <= 20.50) 
    { 
     Double rate_value = 2.00; 

     break; 
    } 

meine Schleife

ist
for (int i = 0; i < list.size(); i++) { 
    Double serial_number = Double.parseDouble(list.get(i).Serial_number_); 
    Double range_one_start = Double.parseDouble(list.get(i).Range_one_start); 
    Double range_one_end = Double.parseDouble(list.get(i).Range_one)end); 
    Double range_two_start = Double.parseDouble(list.get(i).Range_two_start); 
    Double range_two__end = Double.parseDouble(list.get(i).Range_two_end); 
    Double rate = Double.parseDouble(list.get(i).Rate); 
    if(Range_one >= range_one_start && Range_one <= range_one_end && Range_two >= range_two_start && Range_two <= range_two__end) 
    { 
     Double rate_value = rate; 

     break; // this break statement is not working its not breaking the loop. 
    } 
} 

Vielen Dank im Voraus

+0

Verwenden Sie die richtige Benennungskonvention und klären Sie die Frage, damit andere leicht verstehen, was Sie brauchen? –

+0

Woher wissen Sie, dass es "nicht funktioniert"? Hast du einen Debugger benutzt? Wenn Sie Logging-Anweisungen direkt vor und nach der Pause eingeben, sehen Sie die erste und nicht die zweite? BTW, Sie deklarieren einen lokalen 'rate_value' in diesem 'if'-Block, der nie für irgendetwas verwendet wird. –

+0

@KristopherJohnson ja, ich habe Degugger und Rate_value ist globale Variable nur für das Problem, das ich in der Variablen in If Block geschrieben habe. –

Antwort

0

den Code unten benutzen:

for (int i = 0; i < list_p_to_p_clr_buffalo.size(); i++) { 
    Double serial_number =  Double.parseDouble(list_p_to_p_clr_buffalo.get(i).Serial_number_P_To_P_CLR_Buffalo); 
    Double range_one_start = Double.parseDouble(list_p_to_p_clr_buffalo.get(i).fat_from_P_To_P_CLR_Buffalo); 
    Double range_one_end = Double.parseDouble(list_p_to_p_clr_buffalo.get(i).fat_to_P_To_P_CLR_Buffalo); 
    Double range_two_start = Double.parseDouble(list_p_to_p_clr_buffalo.get(i).CLR_from_P_To_P_CLR_Buffalo); 
    Double range_two__end = Double.parseDouble(list_p_to_p_clr_buffalo.get(i).CLR_to_P_To_P_CLR_Buffalo); 
    Double rate = Double.parseDouble(list_p_to_p_clr_buffalo.get(i).rate_P_To_P_CLR_Buffalo); 
    Log.e("IF Condition == >", " " +(fatRate >= range_one_start && fatRate <= range_one_end && clrRate >= range_two_start && clrRate <= range_two__end)); 

    try { 
     if(fatRate >= range_one_start && fatRate <= range_one_end && clrRate >= range_two_start && clrRate <= range_two__end) { 
      Log.e("IF CONDITION DEBUG == >", "CONDITION OK"); 
      pToPClrRate = rate; 
      Log.e("Rate***pToPClrRate* Buff** ==>",""+pToPClrRate); 
      runOnUiThread(new Runnable() { 
       public void run() { 
        // some code #3 (Write your code here to run in UI thread) 
        condition = true; 
        refreshBtn.setEnabled(true); 
       } 
      }); 

      break; // this break statement is not working its not breaking the loop. 
     } 
     else{ 
      runOnUiThread(new Runnable() { 
       public void run() { 
        // some code #3 (Write your code here to run in UI thread) 
        condition = false; 
        refreshBtn.setEnabled(false); 
       } 
      }); 

      Log.e("IF CONDITION DEBUG == >", "CONDITION no else part"); 
     } 


    } catch (Exception e) { 
     // TODO: handle exception 
     Log.e("Exception == >", " "+ e); 
    } 

} 

Conclude: Anyways Ihren Zustand überprüfen.

+0

Dank seiner Arbeit :) –

0

Zunächst sollten Sie Ihren if Zustand überprüfen Sie Log für Debug verwenden können.

Log.d("IF CONDITION DEBUG", "CONDITION OK"); 

Kopieren Sie den obigen Code und fügen Sie ihn in Ihren if Zustand ein. Dann überprüfe dein Logbuch.

+0

es kommt nur diese dies wenn Bedingung, wenn ich Serialnummer eingeben = 1 Werte, wenn ich Serialnummer eingeben = 2 Wert es nicht kommen, wenn Bedingung –

+0

Pause funktioniert wenn wenn Bedingung erscheinen. – Saim

0

Bitte überprüfen Sie Ihre wenn Bedingung:

if(Range_one >= range_one_start && Range_one <= range_one_end && Range_two >= range_two_start && Range_two <= range_two__end) 
{} 
Verwandte Themen