2016-04-07 5 views
-3

Sag mal, wenn ich einen 2D-Array:Wie schreibe ich eine Methode, die true zurückgibt, wenn keine Zeile länger ist als eine vorhergehende Zeile, sonst falsch?

int[][] s = {{1, 4, 5, 10, 11}, {2, 6, 8}, {3, 9, 12}, {7}}; 

und ich möchte ein Verfahren schreiben, die die nächste Zeile stellt sicher, dass eine kürzere Länge als der Rest des Feldes hat, wie würde ich so tun, gehe über?

Wie würde ich eine Methode schreiben, die wahr zurückgibt, wenn keine Zeile länger ist als als eine vorhergehende Zeile, und andernfalls falsch?

Hier ist meine Logik, obwohl ich weit weg bin, verstehe einfach nicht logisch, wie man es geht, denke ich.

public static boolean rowDecrease(int[][] t){ 
    //result empty array here 
    for (int j = 0; j < t.length; j++) { 
     for (int i = 0; i< t[i].length; i++) { // Sum of Columns 
     if (t[i].length>result){ 
      result = t[i].length; 
      return false; 
     } 
     if (t[i].length<result){ 
      result = t[i].length; 
      return true; 
     } 


     } 

     } 
+6

ok, und was genau stoppt Sie? was hast du bisher? – Stultuske

+0

können Sie die Länge der inneren Arrays mit 's [i] .length' erhalten. – SomeJavaGuy

+0

hast du schon was probiert ?? –

Antwort

0

Ich denke, dass ein Code ähnlich wie diese Frage lösen würde:

boolean resultado = true; 

for(int i = 1; i < s.length; i++){ 
    if(s[i].length >= s[i-1].length) return false; 
} 

return true; 
0

Bitte einen Versuch machen, oder ein Problem mit dem bestehenden Code vorlegen, bevor in Zukunft veröffentlichen. Wir müssen Ihnen sonst Rechnungen senden.

public boolean shorterThanTheRest(int[][] s){ 
    int shortestLength = s[0].length + 1; 
    for(int i = 0; i < s.length; i++) 
     if(s[i].length < shortestLength) 
      shortestLength = s[i].length; 
     else 
      return false; 
    return true; 
} 
+0

Kumpel, könnte das nicht etwas einfacher gewesen sein? Wie, vielleicht bei jedem Index "i", überprüfe, ob die Länge des vorherigen Indexes "i-1" größer oder gleich ist. Wenn nicht, gib 'false' zurück. Gib 'true' außerhalb der Schleife zurück. –

+0

@DebosmitRay Ich erkannte, dass, nachdem ich es gepostet hatte; Da jedoch ein anderer Benutzer die einfachere Methode, die Sie beschrieben haben, gepostet hat, habe ich meine Antwort einfach aufgeschrieben, um zu zeigen, dass sie anders angegangen werden kann. Aber ja, da das Kriterium ist zu bestimmen, ob die Länge der Zeilen kontinuierlich abnimmt, ist Ihre Methode am besten. – Zulfe

+0

Haha, ich habe gerade diesen Beitrag gesehen. Ich sehe was du sagst, Zulfe. :) –

0

Sie könnten dies Java Stream mit tun:

int[][] s = {{1, 4, 5, 10, 11}, {2, 6, 8}, {3, 9, 12}, {7}}; 
List<Integer> S = Arrays.stream(s).map(i->i.length).collect(Collectors.toList()); 
boolean is = IntStream.range(0, S.size()).skip(1).allMatch(i->S.get(i)<=S.get(i-1)); 

Ich hoffe, es hilft.