2016-12-18 6 views
1
import java.util.Scanner; 

public class hil { 
    public static void main(String[] args){ 
     Scanner m = new Scanner(System.in); 

     System.out.print("Insert a number:"); 
     int num = m.nextInt(); 

     int[] ar = { 10, 20, 30, 40, 50 }; 
     int sum = 0; 

     for (int i = 0; i < ar.length; i++) { 
      sum += i; 

      for (int n : ar) { 
       if (num == n) { 
        System.out.print(true); 
       } else { 
        System.out.print(false); 
       } 
      } 
     } 
    } 
} 

Das ist mein Code ich tun, um die richtige Ausgabe, aber es zeigt, wahr und falsch für alle Werte im Array. Nicht nur der einzelne Wert. Wie erhält man den wahren und falschen booleschen Wert für den eingegebenen Wert, nicht den Rest des Wertes?, wie einzelne wahr oder falsch zu bekommen, anstatt die wahr oder falsch für jeden Wert in dem Feld immer

Stromausgang:

eine Nummer eingeben: 20
falsetruefalsefalsefalsefalsetruefalsefalsefalsefalsetruefalsefalsefalsefalsetruefalsefalsefalsefalsetruefalsefalsefalse

gewünschter Ausgang:

eine Nummer eingeben: 20
wahre

+0

Wenn Sie prüfen möchten, ob ein Array einen Wert enthält (zB was der Benutzer eingegeben hat), [diese Frage hat bereits eine Antwort] (http://stackoverflow.com/questions/1128723/how-can-i -test-Wenn-ein-Array-enthält-einen-bestimmten-Wert .. aber basierend auf Ihrem Code, ist es nicht klar, was die Absicht ist; Sie loop 'ar.length' mal eine' sum'-Variable beibehalten, dann haben Sie eine geschachtelte Schleife, die überprüft, ob die Benutzereingabe die Iteration entspricht .. um zu wiederholen, was @Mureinik gesagt hat .. was soll der Code tun? – txtechhelp

Antwort

0
import java.util.Scanner; 

public class hil { 
    public static void main(String[] args) { 
     Scanner m = new Scanner(System.in); 

     System.out.print("Insert a number:"); 
     int num = m.nextInt(); 

     int[] ar = {10, 20, 30, 40, 50}; 
     int sum = 0; 
     Boolean inArray = false; 
     for (int n : ar) { 
      sum += n; 
      if (num == n) { 
       inArray = true; 
      } 
     } 
     System.out.println(inArray); 
     System.out.println(sum); 
    } 
} 

Hinweis: Ich nehme an, dass Sie die Summe der Elemente auch brauchen, deshalb haben Sie versucht, eine andere Schleife zu verwenden.

+0

Vielen Dank für die Antwort. Ich glaube, ich habe es jetzt verstanden. – shaikh95

+0

@ShumailaShaikh: Wenn Sie denken, die Antwort hat Ihnen geholfen, bitte akzeptieren Sie die Antwort. –

0

Angenommen, Sie möchten nur überprüfen, ob die vom Benutzer angegebene Nummer in diesem Array ist; Nun, du musst genau nachsehen; und denken Sie daran, dass die Entscheidung:

boolean numberFound = false; 
for (int numberFromArray : nums) { 
    if (numberFromArray == num) { 
    numberFound = true; 
    } 
} 

Und dann nach der Schleife ... Druck, boolean. Einmal.

0

Speichern Sie einfach einen booleschen Wert außerhalb der Schleife und drucken Sie diesen dann aus.

boolean inArray = False; 
for(int n: ar){ 
    if (num == n){ 
     inArray = True; 
    } 
} 
System.out.print(inArray); 
+0

Warum nicht einen 'break' hinzufügen, wenn der boolean auf' true' gesetzt ist? – txtechhelp

+0

@txtechhelp Hat keine Auswirkungen auf die erwartete Laufzeit des Aufrufs.Ich dachte mir, es würde zu einem bereits funktionierenden Code mehr Unordnung hinzufügen. – Alex

1

Ich glaube, Sie suchen nach dem schmutzigen Bitmuster.

import java.util.Scanner; 

public class hil { 
    public static void main(String[] args){ 
     Scanner m = new Scanner(System.in); 

     System.out.print("Insert a number:"); 
     int num = m.nextInt(); 

     int[] ar = { 10, 20, 30, 40, 50 }; 

     Boolean found = false; 

     for (int n : ar) { 
      if (num == n) { 
       found = true; 
       break; 
     } 

     System.out.print(found); 
    } 
} 

Die Idee ist, das Bit (boolean in diesem Fall) zu sein, ‚sauber‘ dann gibt ihm eine Chance zu bekommen, ‚schmutzig‘ zu initialisieren. Einmal 'schmutzig' bleibt es 'schmutzig'. Das Muster funktioniert unabhängig davon, ob Sie "sauber" für richtig oder falsch halten.

Hier funktioniert die Logik so, als würde man alle Gleichheitsvergleiche 'ODER' miteinander verknüpfen.

Das Hinzufügen der break ist lediglich eine Mikrooptimierung. Logik ist die gleiche wie ohne sie. Das Hinzufügen macht es nur ein kleines bisschen schneller. Könnte sein.

+0

upvoted für die einzige, um eine "Pause" zu erwähnen .. eine Mikro-Optimierung nur in diesem Fall (da es nur 5 Elemente im Array sind), aber etwas, das das OP muss bewusst sein, da sie ein Neuling sind. – txtechhelp

+0

Ich denke, man könnte lange darüber streiten, ob sich ein * Neuling * eine Sekunde Gedanken über Mikrooptimierungen macht und in seinen ersten Aufgaben Break-Statements verwendet ... – GhostCat

+0

Ich nenne es eine Mikrooptimierung, weil es in der Welt der Big-O-Notation durchschnittlich ist out als O (0.5n) was immer noch nur O (n) ist. IE, das ist die Art von Verbesserung, die ich nicht zögern würde zu entfernen, wenn es das Lesen des Codes einfacher macht. – CandiedOrange

-2

Ich denke, wenn Sie drucken möchten drucken wahr. Sie sollten es in Anführungszeichen setzen. wie: System.out.println ("wahr");

........................ kann ich falsch liegen ... aber ich habe versucht, eine mögliche Lösung vorzuschlagen.

+0

Das wird dem OP nicht wirklich helfen. – 2ps

Verwandte Themen