2016-03-29 9 views
-2

Wenn ich mein Programm mache, erhalte ich einen Fehler. Das ist der letzte Teil meiner Programmierung.Variable Fehler in Java

public static double calculateTuition(int hour, char major, char state) { 
    int rate; 
    int labfee; 
    double statusfee; 
    if (hour >= 12) { 
     int rate = 800; 
    } else { 
     int rate = hour * 70; 
    } 
    if (major == 'C'||major == 'c') { 
     int labfee = 25; 
    } else if (major == 'O'||major == 'o') { 
     int labfee = 35; 
    } else if (major == 'X'||major == 'x') { 
     int labfee = 0; 
    } 
    if (state == 'Y'||state == 'y') { 
     double statusfee = 5; 
    } else if (state == 'N'||state == 'n') { 
     double statusfee = 5+ rate*.2;  
    } 
    double tuition = rate+labfee+statusfee; 
    return tuition; 
} 

Der Fehler ist Fehler:

variable rate is already defined in method calculateTuition(int,char,char)

und labfee, statusfee gleichen Fehler haben. gesamt: Es gibt 7 Fehler.

+0

Sie jede Variable mehrmals definieren, entfernen Sie die Typkennung nach einer Variable war bereits definiert. – SomeJavaGuy

+0

aber ich brauche die if/else-Methode, um das zu tun, brauche ich andere Werte. @Kevin Esche –

+1

@LeoLin: Ja, aber Sie müssen den Typ nicht jedes Mal neu deklarieren. Es erlaubt nur einmal, dies zu tun, dies bedeutet nicht, dass Sie keinen (neuen) Wert zuweisen können. – Stultuske

Antwort

3

Sie haben variable Rate mehrmals definiert, und daher erhalten Sie Kompilierzeit Fehler. Unten Fragment soll gut funktionieren.

public static double calculateTuition(int hour, char major, char state) { 
      int rate=0; 
      int labfee=0; 
      double statusfee=0; 
      if (hour >= 12) { 
       rate = 800; 
     } else { 
       rate = hour * 70; 
      } 
      if (major == 'C'||major == 'c') { 
       labfee = 25; 
     } else if (major == 'O'||major == 'o') { 
       labfee = 35; 
     } else if (major == 'X'||major == 'x') { 
       labfee = 0; 
      } 
      if (state == 'Y'||state == 'y') { 
       statusfee = 5; 
     } else if (state == 'N'||state == 'n') { 
       statusfee = 5+ rate*.2;  
      } 
      double tuition = rate+labfee+statusfee; 
      return tuition; 
      } 
+0

Wie wäre es mit dem ** Fehler: Inkompatible Typen: String kann nicht in Double verwandelt werden ** für 'Double Unterricht = Rate +" "+ Labfee +" "+ Statusfee;' –

+0

@LeoLin gibt ein Double zurück, wie in 'static double calculateTuition' definiert und nicht ein 'String'. Wenn Sie einen 'String' zurückgeben wollen, ändern Sie ihn in' String' anstelle von 'double.' (Sie brauchen die Variable' tuition' nicht, Sie können einfach die Berechnung zurückgeben) – SomeJavaGuy

+0

@LeoLin Ich vermute doppelten Unterricht = Rate + labfee + statusfee ist völlig in Ordnung. –

0

Wenn Sie Ihre Variable einmal deklariert haben, müssen Sie sie nicht jedes Mal deklarieren, wenn Sie sie verwenden. In Ihrem Fall definieren Sie es mehrmals in Ihrem Code und damit den Fehler. Versuchen Sie Folgendes:

public static double calculateTuition(int hour, char major, char state) { 
    int rate = 0; 
    int labfee = 0; 
    double statusfee = 0.0; 
    double tuition = 0.0; 
    if (hour >= 12) { 
     rate = 800; 
    } else { 
     rate = hour * 70; 
    } 
    if (major == 'C'||major == 'c') { 
     labfee = 25; 
    } else if (major == 'O'||major == 'o') { 
     labfee = 35; 
    } else if (major == 'X'||major == 'x') { 
     labfee = 0; 
    } 
    if (state == 'Y'||state == 'y') { 
     statusfee = 5; 
    } else if (state == 'N'||state == 'n') { 
     statusfee = 5+ rate*.2;  
    } 
    tuition = rate+labfee+statusfee; 
    return tuition; 
} 
+0

Wie wäre es mit dem ** Fehler: inkompatible Typen: String kann nicht in Doppel umgewandelt werden ** für 'Doppelunterricht = Rate +" "+ labfee +" "+ Statusfee;' –

+0

@LeoLin: - Haben Sie den gleichen Code versucht, den ich beantwortet habe über? –

+1

Ja, es funktioniert. Vielen Dank. –

2

Variable sollte nur einmal deklariert werden:

 int rate =0; 
     int labfee =0; 
     double statusfee =0; 
     if (hour >= 12) { 
      rate = 800; 
    } else { 
      rate = hour * 70; 
     } 
     if (major == 'C'||major == 'c') { 
      labfee = 25; 
    } else if (major == 'O'||major == 'o') { 
      labfee = 35; 
    } else if (major == 'X'||major == 'x') { 
      labfee = 0; 
     } 
     if (state == 'Y'||state == 'y') { 
      statusfee = 5; 
    } else if (state == 'N'||state == 'n') { 
      statusfee = 5+ rate*.2;  
     } 
     double tuition = rate+labfee+statusfee; 
     return tuition; 
     } 
+0

möchten Sie möglicherweise Standardwerte verwenden, wenn keiner der if oder elses ausgeführt wird, haben Sie doppelte Unterricht = + + Stultuske

+0

auch da sie lokale Variablen sind, müssen Sie sie initialisieren oder Sie führen eine Kompilierzeit Error. – SomeJavaGuy

+0

@KevinEsche Danke Buddy. Ich habe es verpasst . Bearbeitet die Antwort – Rehman

0

Keine Notwendigkeit, die Variable "rate" jedes Mal zu erklären. Sie definieren es bereits als lokale Variable in Ihrer Funktion, damit Sie überall in Ihrer Funktion darauf zugreifen können.

+0

Danke, aber wie wäre es mit dem ** Fehler: inkompatible Typen: String kann nicht in Doppel umgewandelt werden ** für 'Doppelunterricht = Rate +" "+ labfee +" "+ statusfee;' –

+0

was möchten Sie tun? –

0

Sie haben die Variable am Anfang der Methode deklariert und erneut deklarieren Sie den Wert in der if-Anweisung. Initialisieren Sie auch die lokalen Variablen mit einem gewissen Wert.

public static double calculateTuition(int hour, char major, char state) { 
      int rate =0; 
      int labfee =0; 
      double statusfee =0.0; 
      if (hour >= 12) { 
       rate = 800; 
     } else { 
       rate = hour * 70; 
      } 
      if (major == 'C'||major == 'c') { 
       labfee = 25; 
     } else if (major == 'O'||major == 'o') { 
       labfee = 35; 
     } else if (major == 'X'||major == 'x') { 
       labfee = 0; 
      } 
      if (state == 'Y'||state == 'y') { 
       statusfee = 5; 
     } else if (state == 'N'||state == 'n') { 
       statusfee = 5+ rate*.2;  
      } 
      double tuition = rate+labfee+statusfee; 
      return tuition; 
      } 
0

Variablen halten als global deklariert und erkläre es nicht wieder im gleichen Umfang, können Sie Ihren Code bearbeiten, wie

public static double calculateTuition(int hour, char major, char state) { 
int rate=0; 
int labfee=0; 
double statusfee=0.0,tuition=0.0; 
if (hour >= 12) { 
    rate = 800; 
} else { 
    rate = hour * 70; 
} 
if (major == 'C'||major == 'c') { 
    labfee = 25; 
} else if (major == 'O'||major == 'o') { 
    labfee = 35; 
} else if (major == 'X'||major == 'x') { 
    labfee = 0; 
} 
if (state == 'Y'||state == 'y') { 
    statusfee = 5; 
} else if (state == 'N'||state == 'n') { 
    statusfee = 5+ rate*.2;  
} 
tuition = rate+labfee+statusfee; 
return tuition; 
}