2017-12-08 11 views
0

Ich lerne Java und suchte diesen Fehler, der sehr häufig ist. Aber ich kann die Lösung nicht finden. Ich versuche das Ergebnis von finalScore wiederzuverwenden, aber egal wie ich es deklariere oder wo ich es platziere, IntelliJ erkennt es nicht. Ich weiß, dass ich hier etwas Grundlegendes vermisse. Wie kann ich die Ganzzahlen deklarieren, damit sie in verschiedenen Methoden wiederverwendet werden können? Irgendwo außerhalb der gameOver Methode ist ein Problem. Ich versuchte auch public static int finalScore, aber das warf auch Fehler. Und calculateScore.finalScore aber immer noch Fehler.Kann Symbol nicht finden - Ganzzahl

package com.test; 

public class Main { 

    public static void main(String[] args) { 
     // write your code here 



     calculateScore(true, 5, 5, 200, "sam"); 
     calculateScore(true, 5, 8, 200, "bob"); 
    } 


    public static void displayHighScore(){ 


     if (finalScore > 100);   //problem line of code 
     System.out.println("helloworld"); 
    } 

    public static int calculateScore(boolean gameOver, int score, int levelCompleted, int bonus, String name) { 

     if (gameOver) { 
      int finalScore = score + (levelCompleted * bonus); 
      finalScore += 2000; 
      System.out.println("your final score was " + finalScore); 
      return finalScore; 

      if ((finalScore > 100) || (finalScore < 200)); 
      System.out.println(name "is in position 4"); 

     } 
     return -1; //if the above isn't required/doesn't run, this statement is: else return -1 
     //or we can just type is as } else { return -1; 


     } 
    } 
+0

Es ist sehr schwer, diesen Code zu lesen. Willst du es bitte in eine kompilierte Version bearbeiten? – vinS

+0

finalScore ist keine globale Variable. Wie greifen Sie in der Funktion displayHighScore() darauf zu? Zweitens speichern Sie das Ergebnis von calculateScore nicht in einer Variablen. Drittens wird die "return finalScore" -Zeile immer die Funktion zurückgeben, also was ist der Zweck der if-Anweisung, die danach eingefügt wird, wenn sie nicht einmal ausgeführt wird? – KulaDamian

+0

Sie sollten den finalScore von der Funktion calculateScore() zurückgeben, in einer Variablen speichern und diese Variable dann an die Funktion displayHigh Score übergeben. – KulaDamian

Antwort

0

Es gibt viele Probleme in Ihrem Code hier. Aber für das, was Sie als Problem erwähnt, müssen Sie endstand als globale static Variable wie unten

... 
    static int finalScore; 

    public static void main(String[] args) { 
     // write your code here 



     calculateScore(true, 5, 5, 200, "sam"); 
     calculateScore(true, 5, 8, 200, "bob"); 
    } 
... 

auch erklären, müssen Sie am Ende des if(gameOver) Block die return finalScore Anweisung setzen, wie unten oder Sie erhalten nicht Erreichbarer Fehler für Zeile if ((finalScore > 100) || (finalScore < 200));

if (gameOver) { 
      finalScore = score + (levelCompleted * bonus); 
      finalScore += 2000; 
      System.out.println("your final score was " + finalScore); 


      if ((finalScore > 100) || (finalScore < 200)); 
       System.out.println(name +"is in position 4"); 
      return finalScore; 

     } 
+0

Sinn macht vielen Dank! Ich weiß, dass der Code einige Probleme hat, aber ich kann das meiste lösen. Das Hauptproblem, auf das ich immer wieder stoße, ist, dass dieses Symbol nicht gefunden wird und ich nur versucht herauszufinden, wie Sie es deklarieren - z. static int finalScore. Also vielen Dank. –

+0

@MatthewWalker Schön, dass das geholfen hat. Bitte vergessen Sie nicht, den Beitrag zu aktualisieren und als Antwort zu akzeptieren, wenn er Ihr Problem wirklich löst. Prost. Viel Spaß beim Lernen von Java! :) – qwerty

+1

Ich habe gewählt, aber kein Ruf, um +1 noch hinzuzufügen. Als beantwortete Prost markiert. –

Verwandte Themen