2016-06-17 27 views
-2

Also ich bin sehr neu in Java und versuche ein Programm zu schreiben, das eine korrekte Strafe für überfällige Bücher ausgibt. Ich habe mehrere Fragen wie diese gelesen und die meisten von ihnen beinhalten falsches Platzieren von geschweiften Klammern, aber ich kann nirgends einen Klammerfehler finden. Ich erhalte mehrere Fehler in meinem Programm, aber die meisten lesen "illegaler Start des Typs" oder "illegaler Beginn des Ausdrucks" Könnte jemand mir mit meinem Code helfen/mir ein paar Tipps zur Platzierung der Klammer geben?Unzulässiger Start von Typ/Ausdruck (Bracketplatzierungshilfe?)

Hier ist mein Code:

public class BookFine 
{ 
    public static void main(String[] args) 
    { 
     int daysLate = 0; 
     int bookCost = 0; 
     int result = 0; 

     System.out.print("Enter how many days your book is overdue: "); 
     int daysLate = IO.readInt(); 
     System.out.println("Days Late = " + daysLate); 

     System.out.print("How much does your book cost(enter in cents): "); 
     int bookCost = IO.readInt(); 
     System.out.println("Book Cost = " + bookCost); 

     if (daysLate=<7) 
     { 
      result=daysLate*10; 
     } 
     else 
      if(daysLate>7) 
      { 
       result=(daysLate-7)*20+70; 
      } 

     if(daysLate>90) 
     { 
      result= bookCost+1000; 
     } 

     IO.outputStringAnswer(result); 
    } 
} 
+1

Verwenden 'int', haben danach nur die Variablennamen verwenden. – Compass

+0

Ein anderer Tippfehler: 'daysLate = <7 'ist nicht gültig, ich denke du meinst' daysLate <= 7' – azurefrog

+0

erledigt. Dies ist nur eine pragmatische Lösung oder hat sie tatsächlich einen Zweck? – lazepanda

Antwort

0

Es gibt ein Problem Variable zweimal im Programm in Bezug auf erklärt. Ich habe den Code korrigiert. Bitte beziehen Sie sich auf den folgenden Code.

public class BookFine { 
public static void main(String[] args) 
{ int daysLate = 0; 
    int bookCost = 0; 
    int result = 0; 

    System.out.print("Enter how many days your book is overdue: "); 
    daysLate = IO.readInt(); 
    System.out.println("Days Late = " + daysLate); 

    System.out.print("How much does your book cost(enter in cents): "); 
    bookCost = IO.readInt(); 
    System.out.println("Book Cost = " + bookCost); 

    if (daysLate<=7) 
    { 
     result=daysLate*10; 
    } 
    else 
     if(daysLate>7) 
     { 
      result=(daysLate-7)*20+70; 
    } 

    if(daysLate>90) 
    { 
     result= bookCost+1000; 
    } 


    IO.outputStringAnswer(result); 
} 
} 
+0

, damit klar ist, dass die neu deklarierten Variablen int daysLate = IO.readInt gewesen wären(); und int bookCost = IO.readint(); – lazepanda

+0

Ja ... Sie haben diese Variablen bereits am Anfang deklariert. Jetzt müssen Sie sie nur initialisieren. –

+0

Es gab ein Problem mit extra}. Ich denke, die Ruhe ist in Ordnung. –

-1

Es gab mehrere Fehler im Code, die ich identifizieren konnte.

zuerst den Ausdruck:

if(daysLate=<7) 

ist rückwärts. Es sollte

if(daysLate<=7) 

nächste zu Beginn des Codes liest gerade unter Haupt Sie Ihre Variablen „daysLate, bookCost“ deklarieren. Dann, nach Ihrer Linie:

System.out.print("Enter how many days your book is overdue: "); 

Sie erneut deklariert die Variablen wie:

int DaysLate 

Entfernen Sie den „int“ Abschnitt auf beiden daysLate und bookCost und es sollte in Ordnung Ihnen eine IO-Klasse hat unter der Annahme ausgeführt definiert irgendwo.

-1

Es gibt ein paar Probleme hier.

  1. daysLate=<7; Ich nehme an, dass Sie den Operator < = verwenden möchten. Durch das Beheben dieses Fehlers wird der spezifische Fehler behoben, den Sie über
  2. int daysLate = IO.readInt();; Das Problem mit dieser Zeile besteht darin, dass Sie bereits eine Variable mit dem Namen 'daysLate' deklariert haben. Dies kann auf eine von zwei Arten behoben werden: Entfernen Sie entweder 'int' am Anfang dieser Zeile oder entfernen Sie die ursprüngliche Deklaration in Zeile 4. (Ich bevorzuge die erste.)
  3. IO.readInt(); Es gibt keine Klasse namens IO, zumindest nicht in Bezug darauf, was von Ihrem Code importiert wird. Es gibt jedoch verschiedene Möglichkeiten, Eingaben über die Tastatur zu lesen. Wenn dies Ihre Absicht ist (und es so aussieht), sollten Sie die Dokumentation und Beispiele für die Klasse java.util.Scanner nachschlagen. Ich wiederhole, es gibt mehr als eine Möglichkeit, dies zu erreichen, auch wenn Sie den Scanner nicht verwenden möchten, also wählen Sie Ihr Gift :)
  4. IO.outputStringAnswer(result); Wie # 3, nur dass diesmal das Ergebnis scheinbar irgendwo ausgegeben wird. Vielleicht ist hier System.out.println() in Ordnung.
  5. int bookCost = IO.readInt(); Wie # 2 und # 3. 'bookCost' ist bereits in diesem Bereich definiert, Sie müssen es also nicht erneut deklarieren (entfernen Sie 'int'). Und wieder müssen Sie eine funktionierende Tastatureingabe schreiben.
  6. Schließlich - und das ist kein Fehler per se - Sie sollten auf Ihre Indent Style arbeiten. Es wird wesentlich zur Lesbarkeit Ihres Codes beitragen, was Ihnen wiederum helfen wird, besseren Code zu schreiben.Code, den Sie und Ihre Kollegen gerne lesen, ist guter (und hoffentlich gesunder) Code. Die meisten Entwickler benutzen heutzutage den 1TBF-Stil, aus meiner Erfahrung.

Oh, und Willkommen in Java!

+0

In Ordnung, vielen Dank für Ihre Hilfe, das hat ziemlich alle meine Fehler geklärt, aber ich bin immer noch mit dem Fehler, der lautet: "Klasse, Schnittstelle oder enum erwartet} Ich habe die zwei Klammern am Ende entfernt und jetzt funktioniert mein Code , aber ich bin nicht wirklich sicher, warum ... wie auch immer du die Logik dahinter erklären könntest? – lazepanda

+0

@DanKatebi Hmm, ohne den aktualisierten Code zu sehen, ist es schwer zu sagen, aber das hört sich an, als gäbe es immer noch einen Syntaxfehler von Irgendeine Art. Welche IDE verwenden Sie, wenn überhaupt? Jede moderne IDE, die ihr Gewicht im Salz wert ist, hebt diese Ausgaben für Sie hervor. – nasukkin

+0

Ich denke, dass ich Netbeans verwende. Auch ein anderer Kommentar zu Ihrem # 3 Tipp: Ich habe IO.java in derselbe Ordner, damit das funktioniert. – lazepanda

0

Sie scheinen keine Klammern für Ihren sonst Zweig

else 
if(daysLate>7) 
    { 
     result=(daysLate-7)*20+70; 
} 

if(daysLate>90) 
{ 
    result= bookCost+1000; 
} 

sein sollten

für Variablendeklaration
else 
{ 
    if(daysLate>7) 
    { 
     result=(daysLate-7)*20+70; 
    } 

    if(daysLate>90) 
    { 
     result= bookCost+1000; 
    } 
}