2016-11-24 9 views
0

Mein Code soll nach einem Namen fragen, nach einer Nummer zwischen eins und zehn fragen, die Zahlen von 1 auf die Zahl drucken, die der Benutzer eingegeben hat, außer jeder dritten Nummer sollte der Name des Benutzers sein, der zu Beginn des eingegeben wurde Programm, drucken Sie die geraden Zahlen, fragen Sie den Benutzer fortlaufend nach Nummern, bis der Benutzer den Sentinel eingibt, und drucken Sie dann die Summe der eingegebenen Zahlen. (Ich weiß, das ist eine Menge.) Mein Code läuft gut, das einzige Problem, das ich habe, ist mit dem letzten Teil. Selbst wenn der Benutzer den Sentinel eingibt, der in diesem Fall -1 ist, fragt das Programm immer noch nach einem anderen Eintrag.Wie kann ich meinen Sentinel-Wert korrigieren?

Habe ich beim Deklarieren der Variablen etwas falsch gemacht oder kann jemand erklären, wie ich mein Problem beheben kann? Hier ist mein Code.

import java.util.Scanner; 

/** 
* 
* @author Home 
*/ 
public class NewClass1 { 
    public static void main(String[] args) { 

     int number; 

     Scanner scan = new Scanner(System.in); 
     System.out.print("Enter your name: "); 
     String name = scan.nextLine(); 

     System.out.print("Please enter a number between 1 and 10: "); 
     number = scan.nextInt(); 

//asks for a number between one and ten until I get number within that range, 
     while (number < 1 || number > 10) { 
     System.out.print("No, between 1 and 10: "); 
     number = scan.nextInt(); 
    } 

    for (int i = 1; i <= number; i++) { 
     if (i % 3 == 0) { 
     System.out.print(name + " "); 
    } else { 
     System.out.print(i + " "); 
     } 
    } 
    System.out.println(); 
    for(int i =2; i<=number; i+=2) 
     System.out.print(i + " "); 
     System.out.print("are the even numbers."); 

     final int SENTINEL = -1; 
     int inputNumber; 
     int total = 0; 

     System.out.println(" Enter a number or -1 to finish. "); 
     inputNumber = scan.nextInt(); 

     while (inputNumber != SENTINEL) 
     { 
      total += number; 

      System.out.print("Enter the next number or '-1' to finish. "); 
      number = scan.nextInt(); 
     } 
     System.out.println("The total is " + total); 
    } 
     } 

Antwort

0

Lösung:

Sie erhalten eine Eingabe von Benutzer und Speichern, dass die Eingabe in varible Nummer angerufen, aber sie sind Ihre während gegen Inputnumber überprüfen.

while (inputNumber != SENTINEL) 
    { 
     total += number; 
     System.out.print("Enter the next number or '-1' to finish. "); 
     inputNumber = scan.nextInt(); <<< not number should be inputNumber 
    } 
+0

Abstimmung, wenn es dank half –

+0

für Stimmen fragen, bringt in der Regel entgegengesetzte Wirkung. Auch OP hat keinen ausreichenden Ruf zu wählen. – Pshemo

+0

@Phemo Danke für die Rückmeldung –

0
public class NewClass1 { 

    public static void main(String[] args) { 

     int number; 

     Scanner scan = new Scanner(System.in); 
     System.out.print("Enter your name: "); 
     String name = scan.nextLine(); 

     System.out.print("Please enter a number between 1 and 10: "); 
     number = scan.nextInt(); 

//asks for a number between one and ten until I get number within that range, 
     while (number < 1 || number > 10) { 
      System.out.print("No, between 1 and 10: "); 
      number = scan.nextInt(); 
     } 

     for (int i = 1; i <= number; i++) { 
      if (i % 3 == 0) { 
       System.out.print(name + " "); 
      } else { 
       System.out.print(i + " "); 
      } 
     } 
     System.out.println(); 
     for (int i = 2; i <= number; i += 2) { 
      System.out.print(i + " "); 
     } 
     System.out.print("are the even numbers."); 

     final int SENTINEL = -1; 
     int inputNumber; 
     int total = 0; 


     do { 
      System.out.println(" Enter a number or -1 to finish. "); 
      inputNumber = scan.nextInt(); 
      if(inputNumber!= SENTINEL){ 
       total+=inputNumber; 
      } 
     } while (inputNumber != SENTINEL); 

     System.out.println("The total is " + total); 

    } 
} 
+0

Das sollte helfen, Ihr Fehler war das Lesen in 'Nummer' Variable, sondern einen Vergleich in der While-Schleife mit 'inputNumber'. Ich hoffe das hilft. – zeddysoft

+0

Sie können Ihre Antworten bearbeiten - Sie brauchen keine Kommentare. Aber, Sie sollten vorzugsweise versuchen, den Code in kleineren Abschnitten zu erklären, als nur den vollständigen kopierbaren Code –

+0

@ cricket_007 zu geben, danke, dass Sie darauf hingewiesen haben. – zeddysoft

Verwandte Themen