Du verwendest einen veralteten Browser. Es ist möglich, dass diese oder andere Websites nicht korrekt angezeigt werden. Du solltest ein Upgrade durchführen oder ein alternativer Browser verwenden.
Zu dieser Klasse will ich nun eine Methode erstellen, welche ich testmethode nennen.
Ich habe nun folgendes eingeben.
Code:
public void testmethode(int zahl1, int Zahl2);
.
.
.
Danach kommt die Aufgabe der Methode.
Beim Kompilieren wird mit eine Fehler bei erstellen der Methode angezeigt. Der Ausdruck public void testmethode(); sei ein falscher Ausdruck. Ich habe so verstanden, dass void bedeutet, dass kein retrun beliefert wird, oder? Woran kann mein Fehler liegen?
Danke
import java.io.*;
public class Hauptprogramm4a {
// Hier wird die Aufgabe einer Eingabe eingebaut
public static void main(String args[]) throws IOException
{
InputStreamReader inStream = new InputStreamReader(System.in);
BufferedReader stdin = new BufferedReader(inStream);
String Eingabe1;
String Eingabe2;
System.out.println("Geben sie die die erste ganzahlige Zahl ein: ");
Eingabe1 = stdin.readLine();
System.out.println("Geben sie die zweite ganzzahlige Zahl ein: ");
Eingabe2 = stdin.readLine();
int Zahl1 = Integer.parseInt(Eingabe1);
int Zahl2 = Integer.parseInt(Eingabe2);
int zero = 0;
int rest = Zahl1 % Zahl2;
// Hier beginnt der eigentliche Test
public void ggt(int Zahl1, int Zahl2){
while(rest != zero)
{
Zahl1 = Zahl2;
Zahl2 = rest;
rest = Zahl1 % Zahl2;
}}
// Der größte gemeinsame Teiler wird als Ergebnis ausgegeben
System.out.println("Der groesste gemeinsame Teiler lautet:" + Zahl2);
}
}
public static void main(String args[]) throws IOException
{
public void deineMethode(){
}
}
so muss das aussehen, um die methode zu nutzen brauchst du dann ein objekt der klasse, das kannst du in der " static void main" erzeugen.
Code:
public static void main(String args[]) throws IOException
{
Hauptprogramm4a programm = new Hauptprogramm4a();
programm.deineMethode(40,40);
}
public void deineMethode(int zahl1, int zahl2){
}
import java.io.*;
public class Hauptprogramm4a {
// Hier wird in die Aufgabe die Funktion einer Eingabe eingabaut
public static void main(String args[]) throws IOException
{
InputStreamReader inStream = new InputStreamReader(System.in);
BufferedReader stdin = new BufferedReader(inStream);
String Eingabe1;
String Eingabe2;
System.out.println("Geben sie die die erste ganzahlige Zahl ein: ");
Eingabe1 = stdin.readLine();
System.out.println("Geben sie die zweite ganzzahlige Zahl ein: ");
Eingabe2 = stdin.readLine();
int Zahl1 = Integer.parseInt(Eingabe1);
int Zahl2 = Integer.parseInt(Eingabe2);
// Hier endet die Funktion der Eingabe.
// Ein neues Objekt der Klasse Hauptprogramm muss erzeugt werde, damit auch eine Methode eingebaut werden kann.
Hauptprogramm4a programm = new Hauptprogramm4a();
public void ggT(){
int rest = Zahl1 % Zahl2;
int zero = 0;
while(rest != zero){
Zahl1 = Zahl2;
Zahl2 = rest;
rest = Zahl1 % Zahl2;}
}
}
}
Ich habe vorweg eine kleines Verständisfrage. Ich habe hier die Klasse Hauptprogramm 4a und will nun da ein Objekt zuerstellen. Wie und wo muss der Konstruktor eingebaut werden oder brauche ich hier keiner (Denke woll schon)? Es wird noch immer angezeigt, dass die Methode falsch ist, aber nicht die Erstellung des neues Objekts...warum, obwohl ich doch keinen Konstruktor habe.
Dein Programm kann so nicht funktionieren. Die hast leider wieder den gleichen Fehler, wie dir Oni bereits geschildert hat, du darfst keine Methode innerhalb einer anderen Methoden schreiben.
Bitte gewöhne dir an alle Variablen klein zu schreiben. Für eine bessere Lesbarkeit kannst du sinnvollerweise jeweils die zusammengehörigen Blöcke gleich weit einrücken. Dann siehst du die Fehler auch besser.
Code:
import java.io.*;
public class Hauptprogramm4a {
public void ggT(int zahl1, int zahl2) {
int rest = zahl1 % zahl2;
int zero = 0;
while (rest != zero) {
zahl1 = zahl2;
zahl2 = rest;
rest = zahl1 % zahl2;
}
}
public static void main(String args[]) throws IOException {
InputStreamReader inStream = new InputStreamReader(System.in);
BufferedReader stdin = new BufferedReader(inStream);
String eingabe1;
String eingabe2;
System.out.println("Geben sie die die erste ganzahlige Zahl ein: ");
eingabe1 = stdin.readLine();
System.out.println("Geben sie die zweite ganzzahlige Zahl ein: ");
eingabe2 = stdin.readLine();
int zahl1 = Integer.parseInt(eingabe1);
int zahl2 = Integer.parseInt(eingabe2);
Hauptprogramm4a programm = new Hauptprogramm4a();
programm.ggT(zahl1, zahl2); // Aufruf der Methode
}
}
Übrigens deine ggT-Methode hat ja gar keinen Rückgabe..
Ich habe keine Ahnung, ob ich weiter komme, aber ich denke bzw. hoffe schon.
Mein Programm sagt mir beim complieren, dass er die Varibeln in der Methode nicht findet. Was mache ich falsch:
Code:
import java.io.*;
public class Hauptprogramm4a {
//-----------------Attribute----------------//
int attr1;
int attr2;
//----------------Konstruktor---------------//
Hauptprogramm4a(int ersteZahl, int zweiteZahl){
attr1 = ersteZahl;
attr2 = zweiteZahl;}
//HIER WIRD DIE FUNKTION DER EINGABE EINGEBARBEITET
public static void main(String args[]) throws IOException
{
InputStreamReader inStream = new InputStreamReader(System.in);
BufferedReader stdin = new BufferedReader(inStream);
String Eingabe1;
String Eingabe2;
System.out.println("Geben sie die die erste ganzahlige Zahl ein: ");
Eingabe1 = stdin.readLine();
System.out.println("Geben sie die zweite ganzzahlige Zahl ein: ");
Eingabe2 = stdin.readLine();
int Zahl1 = Integer.parseInt(Eingabe1);
int Zahl2 = Integer.parseInt(Eingabe2);
System.out.println("Der größte gemeinsamen Teiler ihrer beiden Zahlen lautet:" + Hauptprogramm4a.ggT(Zahl1,Zahl2));}
//HIER ENDET DIE EINGABE FUNKTION
//Ein neues Objekt der Klasse Hauptprogramm muss erzeugt werde, damit auch eine Methode eingebaut werden kann.
public void ggT(){
int rest = Zahl1 % Zahl2;
int zero = 0;
while(rest != zero){
Zahl1 = Zahl2;
Zahl2 = rest;
rest = Zahl1 % Zahl2;}
}}
Ich habe hier die Klasse Hauptprogramm 4a und will nun da ein Objekt zuerstellen. Wie und wo muss der Konstruktor eingebaut werden oder brauche ich hier keiner (Denke woll schon)?
Ein Konstruktor ist meine ich nicht zwingend notwendig, Java geht dann davon aus, dass er leer ist.
Ansonsten, wenn du einen machen möchtest, muss bzw. es ist allgemein üblich ihn direkt nach der Klassendefinition zu machen:
Code:
class A4 {
public A4() {//den Konstruktor schreibt man genau, wie die Klasse, also auch groß
}
}
Filip hat gesagt.:
Es wird noch immer angezeigt, dass die Methode falsch ist, aber nicht die Erstellung des neues Objekts...warum, obwohl ich doch keinen Konstruktor habe.
Also, um es jetzt mal unmissverständlich zu sagen: So wie du Code schreibst, sieht man auch nix!
- Mach die Klammern zu und vorallem in neue Zeilen(})
- Variablen klein schreiben
Desweiteren ein paar Tipps:
- Das was du da gemacht hast, geht garnicht, da du sonst von non-static auf static zugreifen müsstet oder umgekehrt, ich hab's also mal in einen Konstruktor gepackt.
- Du hast eine Endlosschleife drin, ich kapier nicht ganz was das Programm macht, aber ich konnte es nur durch Eingabe von Buchstaben zum Absturz bringen
- Fang die NumberFormatException ab, dann kannst du genau das^^ verhindern, mach dafür die Schleife irgendwie anders.
Also, ich hab' jetzt ganze jetzt mal gescheit gemacht, aber wie gesagt, die^^ Fehler sind noch drin, ich schreib' ja nicht deinen Code.
Code:
import java.io.*;
public class Hauptprogramm4a {
//Du musst die Variablen, die du auch in den Methoden verwenden möchtest hier deklarieren
//Sonst kriegst du Stress mit dem Compiler
int zahl1;
int zahl2;
public Hauptprogramm4a() throws IOException {
InputStreamReader inStream = new InputStreamReader(System.in);
BufferedReader stdin = new BufferedReader(inStream);
String eingabe1;
String eingabe2;
System.out.println("Geben sie die die erste ganzahlige Zahl ein: ");
eingabe1 = stdin.readLine();
System.out.println("Geben sie die zweite ganzzahlige Zahl ein: ");
eingabe2 = stdin.readLine();
zahl1 = Integer.parseInt(eingabe1);
zahl2 = Integer.parseInt(eingabe2);
// Hier endet die Funktion der Eingabe.
// Ein neues Objekt der Klasse Hauptprogramm muss erzeugt werde, damit auch eine Methode eingebaut werden kann.
Hauptprogramm4a programm = new Hauptprogramm4a();
}//die hier hast du vergessen
public void ggT() {
int rest = zahl1 % zahl2;
int zero = 0;
while(rest != zero) {
zahl1 = zahl2;
zahl2 = rest;
rest = zahl1 % zahl2;
}
}
public static void main(String args[]) {
try {
new Hauptprogramm4a();
} catch (IOException e) {
System.out.print("Es ist ein Fehler aufgetreten.");
System.out.println(e);
}
}
}
import java.io.*;
public class Hauptprogramm4a_2 {
// -----------------Attribute----------------//
int attr1;
int attr2;
// ----------------Konstruktor---------------//
Hauptprogramm4a_2(int ersteZahl, int zweiteZahl) {
attr1 = ersteZahl;
attr2 = zweiteZahl;
}
// HIER WIRD DIE FUNKTION DER EINGABE EINGEBARBEITET
public static void main(String args[]) throws IOException {
InputStreamReader inStream = new InputStreamReader(System.in);
BufferedReader stdin = new BufferedReader(inStream);
String Eingabe1;
String Eingabe2;
System.out.println("Geben sie die die erste ganzahlige Zahl ein: ");
Eingabe1 = stdin.readLine();
System.out.println("Geben sie die zweite ganzzahlige Zahl ein: ");
Eingabe2 = stdin.readLine();
int zahl1 = Integer.parseInt(Eingabe1);
int zahl2 = Integer.parseInt(Eingabe2);
Hauptprogramm4a_2 programm = new Hauptprogramm4a_2(zahl1, zahl2);
// System.out
// .println("Der größte gemeinsamen Teiler ihrer beiden Zahlen lautet:"
// + programm.ggT());
// ==> Das kann nicht gehen, du hast keinen Rückgabewert bei der
// ggT()-Methode
}
// ==> Du speicherst deine Zahlen bereits als Klassenfelder ab, so musst du
// diese auch verwenden.
public void ggT() {
int rest = attr1 % attr2;
int zero = 0;
while (rest != zero) {
attr1 = attr2;
attr2 = rest;
rest = attr1 % attr2;
}
}
}
Es ist es Übungsaufgabe und soll den größten gemeinsamen Teiler aus zwei ganzzahligen Zahlen errechnen. Ich habe die Aufgabe schon vorher anders lösen können, aber der Prof. will es mit der Benutzung von Methode haben und will das ich ein neues Objekt erstelle. Nun frage ich mich aber, warum so, wenn es auch so geht.
Hier ist meine "einfach Lösung"
Code:
import java.io.*;
public class Hauptprogramm4a
{
//Hier wird in die Aufgabe die Funktion einer Eingabe eingabaut
public static void main(String args[]) throws IOException
{
InputStreamReader inStream = new InputStreamReader(System.in);
BufferedReader stdin = new BufferedReader(inStream);
String Eingabe1;
String Eingabe2;
System.out.println("Geben sie die die erste ganzahlige Zahl ein: ");
Eingabe1 = stdin.readLine();
System.out.println("Geben sie die zweite ganzzahlige Zahl ein: ");
Eingabe2 = stdin.readLine();
int Zahl1 = Integer.parseInt(Eingabe1);
int Zahl2 = Integer.parseInt(Eingabe2);
//Hier endet die Funktion der Eingabe.
int rest = Zahl1 % Zahl2;
int zero = 0;
while(rest != zero)
{
Zahl1 = Zahl2;
Zahl2 = rest;
rest = Zahl1 % Zahl2;
}
System.out.println("Der groesste gemeinsame Teiler der beiden Zahlen lautet: " + Zahl2);
}
}
Aufgaben lösen wir hier nicht, obwohl ich es schon fast gemacht habe. Schau dir meine Lösung (viel) weiter oben (nicht die vorhergehende) mal an und jetzt musst du nur noch das mit dem Rückgabetyp lösen... ;-)
// ...
public int ggT(int zahl1, int zahl2) { // Methode mit einem int-Datentyp als Rückgabewert
// ...
return zahl2; // deine Rückgabe
}
// ...
public static void main(String[] args) {
// ...
Hauptprogramm4a p = new Hauptprogramm4a(); // hier erzeugst du eine neue Instanz von deiner Klasse
System.out.println("ggT: " + p.ggT(zahl1, zahl2)); // hier rufst du die ggT()-Methode auf und der Rückgabewert wird ausgegeben
}
// ...