2016-11-02 8 views
-3

Ich versuche ein Java-Programm zu machen, das Eingaben hinzufügt, bis die Summe 100+ entspricht oder der Benutzer 5 Zahlen eingibt. Ich versuche auch, einen höchsten Lauf hinzuzufügen, der die höchste Eingabe verfolgt. Momentan läuft es nach 5 Eingaben weiter, wenn es weniger als 100 ist und mein höchster Lauf funktioniert nicht. ? Wie würde ich dieses Problem beheben (ich bin zu Java neu, wenn Sie sagen können)Programm läuft nicht wie vorgesehen

import java.io.*; 

public class HighScoreTest { 

    public static void main(String[] args) { 
     // input streams. 
     InputStreamReader input = new InputStreamReader(System.in); 
     BufferedReader reader = new BufferedReader(input); 

     // constant declarations 
     final Integer MAX = 100; 
     final Integer MAX_NUMBER = 4; 

     // variable declarations 
     String sName; 
     Integer currentTotal; 
     Integer currentNumber; 
     Integer numbersInputed = 0; 
     Integer count; 
     Integer maxRunToDate = 0; 
     // we catch exceptions if some are thrown. 
     // an exception would be entering a string when a number is expected 
     try { 
       System.out.println("What is your name?"); 

       // reading string from the stream 
       sName = reader.readLine(); 
       currentTotal = 0; 

       for(count = 0; count < MAX_NUMBER; count++) { 
        numbersInputed += count; 
       } 

       do { 
        System.out.println("Please enter a number"); 
        currentNumber = Integer.parseInt(reader.readLine()); 
        currentTotal = currentTotal + currentNumber; 
       }while(currentTotal < MAX || numbersInputed == MAX_NUMBER); 

       if (maxRunToDate < currentTotal) { 
        maxRunToDate = currentTotal; 
       } 

       System.out.println(sName +", the total for this run is "+ currentTotal); 
       System.out.println("The highest run is "+ maxRunToDate); 

     } catch (IOException e){ 
      System.out.println("Error reading from user"); 
     } 

    } 

} 
+1

Kürzen Sie Ihr Programm so viel wie Sie können, während Sie das Problem immer noch reproduzieren. Fordern Sie uns nicht auf, das gesamte Programm für Sie zu debuggen. Sobald Sie es gekürzt haben, werden Sie wahrscheinlich das Problem sehen oder können erneut fragen. –

+0

Wenn der Benutzer 5 Zahlen eingeben soll, warum ist 'MAX_NUMBER' auf 4 gesetzt? – QBrute

Antwort

1

Einige helfen Sie loslegen:

currentRun = currentRun + currentNumber; 

einfach keinen Sinn macht!

Ich nehme an, dass currentRun die Anzahl der Läufe so weit zählen sollte. Damit können Sie nach der 5. Runde aufhören.

Also: Sie sollten diesen Zähler nur für jede Runde erhöhen.

Mit anderen Worten: versuchen Sie separate Dinge. Gehen Sie zurück und überlegen Sie, welche Art von Informationen Sie "verfolgen" möchten und wie viele Variablen Sie wirklich benötigen.

Und bitte verstehen: wir werden Ihren Auftrag nicht für Sie lösen. Wenn überhaupt, wird es Hinweise geben, wie man Fortschritte machen kann. Aber erwarten Sie nicht, dass wir alle die Fehler in Ihrem Code darstellen und sie für Sie auflösen.

+0

Seine 'numbersInputed' macht auch keinen Sinn, im Grunde ist der ganze Code seltsam. –

+0

Ich benannte diese Variable seltsam, ich meine aktuelleGesamtheit als in der Summe angesammelt bis zu diesem Punkt. Also würde diese Zeile das aktuelleTotal aktualisieren, indem die Nummer hinzugefügt wird, die der Benutzer gerade an diesem Punkt eingegeben hat. numberInputed ist die Variable, die addiert, wie viele Eingaben. – Lummers

+0

@Lummers Was Sie * gemeint * zu tun haben ist egal. Der Computer (und wir), wir kennen nur den ** Code ** den du geschrieben hast. Und wie Murat sagt, sieht dein Code in vielerlei Hinsicht seltsam aus. Ich habe darauf hingewiesen ** ein ** offensichtliches Problem mit deinem Code, um dich in Gang zu bringen ... – GhostCat

0

Es gibt mehrere Dinge, die Sie wissen müssen:

Zuerst Wrap-Klassen wie Integer vermeiden, wenn Sie es verwenden zusammen mit dem Colection FrameWork oder sogar Streams beabsichtigen. Wenn Ihr Problem die Tatsache ist, dass die Ausgabe der Analyse die Klasse Integer ist, machen Sie sich keine Sorgen, denn es wird automatisch aus der Box entfernt. Etwas wie dieses:

int currentNumber = Integer.parseInt(reader.readLine()); //Auto Unboxing 

Zweitens, warum haben Sie sogar die for-Schleife am Anfang? Entfernen Sie es. Wenn Sie die Variable numbersInputed initialisieren wollen, tun Sie es einfach.

Und drittens, wenn Sie zu erhöhen oder verringern whant, können Sie nur ++ oder `-

und überprüfen Sie die Oracle-Tutorials: https://docs.oracle.com/javase/tutorial/

Ich hoffe, dass ich dazu beigetragen haben.

Einen schönen Tag noch. :)

Verwandte Themen