geschachtelte for-schleifen

El Hadji

Bekanntes Mitglied
Servus Community,

Ich bräuchte wieder mal euren Rat.
Bei einer forschleife kann ich mit continue, 1 weitergehen.
Code:
for (int i = 0; i < liste.length; i++)
{
continue;
}

Wie mache ich es noch schnell bei einer geschachtelten for-schleife:

Code:
 for (int i = 0; i < a.length-1; i++)
       {
           int zwischensumme = a[i];
           if (a[i] > maxSum)
           {
               return false;
           }
          
           else
           for (int j = i+1; j < a.length; j++)
           {
               if((zwischensumme +a[j]) > maxSum)
               {
                   count++;
                   i = j;
                  
                }
}

bei i = j; verändert sich zwar i aber er bleibt bei der 2ten vorschleife.
Wenn ich i++ nehme springt die 1ste Vorschleife immer 2 weiter, eh verständlich

mfg El Hadji
 
EDIT: falsche Antwort gelöscht.

Code:
int oldCount = count;
for (int j = i+1; oldCount == count && j < a.length; j++)

Nachtrag: oder eben einfach ein break nach i=j;
 
Wow vielen Dank, so einfach kanns teilweise sein^^
Eine Frage hätte ich noch. Mein Code macht alles was es soll nur wenn er leer ist und k und MaxSum 0 sind, stimmt er nicht!
dyawkg4gplccizc7i.png

Code:
package teilen;


import java.util.*;

public class MaxSum
{
 
    public MaxSum()
    {
    }

  
    public boolean istTeilbar(int [] a, int k, int maxSum)
    {
       int count = 1;
       boolean ergebnis = false;
     
      
       for (int i = 0; i < a.length-1;i++)
       {
           int zwischensumme = a[i];
           if (a[i] > maxSum)
           {
               return false;
           }
          
           else
           for (int j = i+1; j < a.length; j++)
           {
               if((zwischensumme +a[j]) > maxSum)
               {
                   count++;
                   i = j-1;
                   break;
                  
                }
               else
              
               zwischensumme += a[j];
           }
          
           if( count <= k)
           {
               ergebnis = true;
            }
        }
       
        return ergebnis;
    }
}
 
EDIT: falsche Antwort gelöscht.

Code:
int oldCount = count;
for (int j = i+1; oldCount == count && j < a.length; j++)

Nachtrag: oder eben einfach ein break nach i=j;
nochmals sorry für die störung.
Wenn ich vor dem break i =j nehmen überspring mir die erste Vorschleife einen Wert. Was mache ich falsch?
Code:
 public boolean istTeilbar(int [] a, int k, int maxSum)
    {
       int count = 1;
       boolean ergebnis = true;
     
      
       for (int i = 0; i < a.length-1;i++)
       {
           int zwischensumme = a[i];
           if (a[i] > maxSum)
           {
               return false;
           }
          
           else
           for (int j = i+1; j < a.length; j++)
           {
               if((zwischensumme +a[j]) > maxSum)
               {
                   count++;
                   i = j;
                 
                   break;
                  
                }
               else
              
               zwischensumme += a[j];
           }
          
           if( count > k)
           {
               ergebnis = false;
            }
        }
       
        return ergebnis;
    }
}
 
Wenn die zweite Schleife verlassen wird, wird die erste Schleife weiter ausgeführt, am Ende wird i hochgezählt. Du müsstest also vor dem break i = j-1 setzen.
 

Zurück
Oben