2017-10-05 1 views
0

ich mit diesem Code spiele ...kann ich etwas in den runden Klammern in while-Schleife mit der Bedingung drucken?

import java.util.Scanner; 

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

     do{ 
      System.out.print("Youe Value: "); 
      long tobe = scan.nextLong(); 

      int total = 0; 

      String parsed = String.valueOf(tobe); 

      for(int i = 0; i < parsed.length(); i++) { 
       total += Character.getNumericValue(parsed.charAt(i)); 
      } 

      System.out.println("Your Result: "+ total); 
     } 
     while(scan.hasNextLong()); 
    } 
} 

Die Ausgabe für eine Reihe auffordern sollte es dann und als Ergebnis drucken verarbeiten.

und dann wieder mit einem anderen Eingang, ob das eine integer(long)

aber die Bedingung in while Schleife scan.hasnextLong nimmt die Eingabe selbst und Verfahren und der Ausgang ist wie this-

Ihr Wert: Ihr Ergebnis: n

aber die erwartete Ausgabe ist wie this-

Ihre Valu e: m

Ihr Ergebnis: n

als wie beim ersten Mal. tobe scheint keine Eingabe nach dem ersten Mal. Es verwendet nur, was geben in Schleife Zustand zu prüfen, ob das ein integer ist. deutlicher die Programmabfrage vor dem Drucken Ihr Wert: und verwenden Sie diesen Wert in tobe.

Also wollte ich innerhalb von while Schleife condion mit Bedingung innerhalb der runden Klammern

while(scan.hasNextLong()) 

so drucken Sie es aus und prompt

irgendwo in dieser Zeile drucken, wie ich wollte;

Antwort

0

Sie versuchen, einen Wert zu drucken, bevor Sie ihn initialisieren. Wenn Sie print anstelle von println verwenden, befindet sich der nächste Ausgang in derselben Zeile.

public static void main(String[] args) 
     { 

      Scanner scan = new Scanner(System.in); 

      do{ 

       long tobe = scan.nextLong(); 
       System.out.println("Your Value: " + tobe); 

       int total = 0; 

       String parsed = String.valueOf(tobe); 

       for(int i = 0; i < parsed.length(); i++) { 
        total += Character.getNumericValue(parsed.charAt(i)); 
       } 

       System.out.println("Your Result: "+ total); 
      } 
      while(scan.hasNextLong()); 
     } 
0

Ich habe Ihren Code geändert, so dass der Scanner einen String Eingang erhält.
Die while Bedingung überprüft dann, ob es nur Zahlen enthält. Das geschieht, indem .matches() auf der Eingabe aufgerufen wird, die versucht, die Eingabezeichenfolge mit dem Regulären Ausdruck \d+ übereinzustimmen. Dieser Ausdruck entspricht einer Reihe von einer oder mehreren Ziffern. \d ist für eine Ziffer, + ist ein Quantifikator. Sie können über Reguläre Ausdrücke auf Seiten wie RegExr lernen und spielen.

Scanner scan = new Scanner(System.in); 
    String input; 

    System.out.print("Your Value: "); 

    while ((input = scan.nextLine()).matches("\\d+")){ 

     int total = 0; 

     for(int i = 0; i < input.length(); i++) { 
      total += Character.getNumericValue(input.charAt(i)); 
     } 

     System.out.println("Your Result: "+ total); 
     System.out.println("\nYour Value: "); 
    } 

    System.out.println("\nTHE END."); 
    scan.close(); 
+0

so .matches ("\\ d +") überprüft, ob die Zeichenfolge nur Ziffern enthalten? Wenn ja, habe ich verstanden. , aber ich wollte auch ausdrucken. Und wirst du auch erklären, wie die Match-Methode funktioniert? deutlich. Warum \\ d + etc etc. – Rabin

+0

@Rabin Ich habe eine Erklärung der '.matches()' Methode hinzugefügt. Leider verstehe ich nicht, warum Sie etwas in den Zustand drucken möchten. Ich hoffe immer noch, dass das hilft. – mumpitz

0

ersetzen while(scan.hasNextLong()); mit while(scan.hasNextLine());

Verwandte Themen