Können Sie nicht, rufen Sie eine Methode aus einer anderen Klasse in JAVA
Mache ich eine Zahl erraten Programm. Eine Zufallszahl wird generiert, und der Benutzer versucht, zu erraten. Das Programm print "zu hoch" oder "zu niedrig" und lass die user raten wieder. Ich habe ein Problem die Eingabe der Vermutungen nach der ersten in der Methode, ist die Vermutung.
Hier ist meine Klasse:
import java.util.Scanner;
public class Lab8
{
public static void main (String [] args)
{
Scanner in = new Scanner(System.in);
System.out.println("Enter a number: ");
MyNumberGuess MyNumberGuess = new MyNumberGuess(in.nextInt());
while (MyNumberGuess.tooLow() == true || MyNumberGuess.tooHigh() == true)
{
if (MyNumberGuess.tooHigh() == true)
{
System.out.println("Too high");
System.out.println("Enter a number: ");
MyNumberGuess.MyNumberGuess(in.nextInt());
}
else if (MyNumberGuess.tooLow() == true)
{
System.out.println("Too low");
System.out.println("Enter a number: ");
MyNumberGuess.MyNumberGuess(in.nextInt());
}
}
System.out.println("Correct");
System.out.println("You made " + MyNumberGuess.getNumGuesses() + " guesses");
}
}
Hier ist die andere Klasse, und das problem Methode:
import java.util.*;
public class MyNumberGuess
{
public static final int MAX_GUESS = 1000;
private int theNumber, numGuesses, prevGuess;
public MyNumberGuess(int inGuess)
{
Random generator = new Random();
numGuesses = 1;
prevGuess = inGuess;
theNumber = generator.nextInt(MAX_GUESS);
}
}
So, ich bin immer ein "cannot find symbol" - Fehler beim kompilieren in meiner ersten Klasse auf dieser Linie:
MyNumberGuess.MyNumberGuess(in.nextInt());
Habe ich versucht, indem er es in verschiedenen Möglichkeiten, mit Parametern und nicht, und zu versuchen, rufen Sie die Variablen allein, dachte Sie soll privat sein. Jede Hilfe ist willkommen.
- Ist, dass eine Methode oder ein Konstruktor?
- Versuchen Sie es mit
new MyNumberGuess(...)
. - machen, dass eine Antwort!
Du musst angemeldet sein, um einen Kommentar abzugeben.
Du zuvor
erstellen Sie eine Instanz Ihrer Klasse. Warum sollten Sie dann verwenden,
die gleiche Sache zu tun?
Diese
ist ein Konstruktor. Dazu rufen Sie es mit der
new
Betreiber.Nur re-initialisieren Sie Ihre Variablen
Beachten Sie, dass die java-Konvention besagt, dass Variablen-Namen sollten beginnen mit einem Kleinbuchstaben.
Auf einer anderen Anmerkung, dieses Stück code
redundant ist. Der Aufruf der Methode
MyNumberGuess.tooLow()
gibt bereits einentrue
oderfalse
Wert, also warum vergleichen Sie es mit== true
? Nur verwenden Sie es direkt. Zum Beispieloder
Gelten entsprechend mit der
while
.guess.MyNumberGuess(...
zeigt an, dass Sie versuchen, rufen Sie eine Methode namensMyNumberGuess
auf dem Objekt durch die variable referenziertenguess
. Das ist falsch. Was Sie wollen, ist die übernahme derguess
variable auf ein neues Objekt. Verwendenguess = new MyNumberGuess(in.nextInt())
.Verwenden Sie nicht die exakte Klassenname wird als Variablenname
Ändern, wenn das Gehäuse etwas
Ihnen fehlt eine geschweifte Klammer, Sie habe Ihre definition der Klasse und dann haben Sie die definition einer Funktion, aber kein Ende Semikolon. Und sollten Sie nicht verwenden die gleichen Namen für so viele Variablen.
Hatte ich ein komisches Problem: egal, was ich konnte nicht auf die öffentlichen Methoden einer meiner Klassen war, ob statische oder ob ich setup zu instanziieren. Ich landete löschen Sie die Klasse und erstellen eine neue mit einem anderen Namen. Ich muss man auf eine eingebaute Klasse name.