Probleme bei kompilieren ... Bitte um Hilfe

JimmyFly

Mitglied
Hallo,

ich habe ein Problem mit diesem Programm:

Java:
//Johann Leidel, Tutor: Paul Hoffmann//
import java.util.Scanner;
public class Rechnen {

public static void main(String[] args) {

Scanner in = new Scanner(System.in);
        
        double a;
        double b;
        double c;
        double d;
        
        
        System.out.println("Eingabe des ersten Zählers ");
        a = in.nextInt();
        System.out.println("Eingabe des ersten Nenners ");
        b = in.nextInt();
   		System.out.println("Eingabe des zweiten Zählers ");
        c = in.nextInt();
        System.out.println("Eingabe des zweiten Nenners ");
        d = in.nextInt();

		double e = a/b; 
        double f = c/d;


int i = 0; 

while (i != 5) {
	System.out.println("Geben Sie 1 ein, dann werden die Brüche addiert");
	System.out.println("Geben Sie 2 ein, dann werden die Brüche subtrahiert");
	System.out.println("Geben Sie 3 ein, dann werden die Brüche multipliziert");
	System.out.println("Geben Sie 4 ein, dann werden die Brüche dividiert");
	System.out.println("5");
		i = input.nextInt();  
	double g; double h; double j; double k;
	
	if (i == 1) g = e + f;
		else if (i == 2) h = e - f;
		else if (i == 3) j = e * f;
		else if (i == 4) k = e / f;
		
		System.out.println("g");
		System.out.println("h");
		System.out.println("j");
		System.out.println("k");
		
		
		}
		
		}
		
		}


als Fehler wird mir das vom Terminal ausgegeben:

Rechnen.java:36: cannot find symbol
symbol : variable input
location: class Rechnen
i = input.nextInt();
^
1 error




Kann mir vielleicht jemand weiter helfen?
 
Weil dir essenzielle Grundlagen der Sprache java fehlen.

Über leg mal wo die Ausgabe erfolgen soll und wie du es geschrieben hast. Überlege dann wie man variablen an Methoden übergibt.

Fall e eine variable ist dann

So - Methode(e) oder so - Methode("e")??
 
gut ich habe es selber gelöst einfach in der if Bedingung System.out.println einfügen... Nach der Aufgabenstellung sollen die Brüche gekürzt werden. Hat da jemand eine Idee wie man das umsetzen kann?
 
Verstehe ich nicht.

Das steht doch da oben im Link.

Hast du Fragen dazu? Wir machen hier keine Hausaufgaben.
 
mir soll ja auch keiner die Hausaufgaben machen sondern eine Hilfe zum Schreiben dieses Programmes geben und das man beim kürzen den ggt suchen muss bekomme ich auch noch gerade so hin :-/ (Grundschulmathematik)

Jedoch kann ich ja nicht fülle Zahlen den ggt abdecken. Daher meine Frage wie ich dran gehen soll.

Ach und zu dem Link den hatte ich mir schon vorher angeguckt aber ich dachte das dieses Forum gerade für Probleme zur Verfügung steht. Und für mich ist dieses ein Problem auch wenn es für euch banal erscheint. Da ich gerade 2 Woche mit Java programmiere und vorher auch noch keine Erfahrung mit dem Programmieren hatte.
 
Ach und zu dem Link den hatte ich mir schon vorher angeguckt aber ich dachte das dieses Forum gerade für Probleme zur Verfügung steht. Und für mich ist dieses ein Problem auch wenn es für euch banal erscheint. Da ich gerade 2 Woche mit Java programmiere und vorher auch noch keine Erfahrung mit dem Programmieren hatte.

klar is das forum für probleme, aber dafür musst du uns mal zeigen was du bis jetzt hast (aktueller code) und auch genau sagen wo das problem liegt.
dann kann man dir einen stupser in die richtige richtung geben

Jedoch kann ich ja nicht fülle Zahlen den ggt abdecken. Daher meine Frage wie ich dran gehen soll.
ja wie berechnest du den ggt auf einen zettel? wahrscheinlich in dem du dir einfach alle teiler von beiden zahlen aufschreibst und dann vergleichst welche in beiden vorkommen oder?

mittels könnte man den ggt bekommen
Java:
public List<int> getGGT(int zahl)
{
   List<int> teiler = new List<int>(); // eine liste für alle teiler der zahl
   for(int i=1;i<=zahl;i++) // alle zahlen durchgehen durch die die zahl teilbar sein könnte
   {
       if(zahl%i==0) // überprüfen ob die division kein rest hat (modulo)
       {
           teiler.Add(i); // wenn ja ist die zahl i ein teiler
       }
   }
   return teiler;
}

ps: weiß grad nicht ob List oder ArrayList (da ich grad viel mit C# mache)
 
Zuletzt bearbeitet von einem Moderator:
Statt sich hier durch das Forum zu quälen, zeige ich dir, was du eigentlich hättest machen müssen. Und mache damit 90 % deiner Hausaufgaben.

Jedoch kann ich ja nicht fülle Zahlen den ggt abdecken. Daher meine Frage wie ich dran gehen soll.

Also wie man den GGT berechnet ist klar. (sagst du). Ich hole mal den Quellcode. (Kopieren und hier einfügen)

Java:
/*
  * Berechnung des ggT zweier Zahlen 
  * nach dem Euklidischen Algorithmus
  */
 private static int ggt(int zahl1, int zahl2) {
   while (zahl2 != 0) {
     if (zahl1 > zahl2) {
       zahl1 = zahl1 - zahl2;
     } else {
       zahl2 = zahl2 - zahl1;
     }
   }
   return zahl1;
 }

Nun muss ich wissen, wie man diese Methode aufruft. Steht in jedem Javabuch.

Ich habe einen bruch 3/9 = was aber auch 1/3 ist.

Code:
ggt = ggt(3, 9);

nun mache ich
Code:
3/ggt
und
Code:
9 / ggt
.

Fertig.

Vielleicht ein wenig mehr Eigeninitiative herausblicken lassen, dann bekommt man wunder aus so einem Forum heraus.
 
klar is das forum für probleme, aber dafür musst du uns mal zeigen was du bis jetzt hast (aktueller code) und auch genau sagen wo das problem liegt.
dann kann man dir einen stupser in die richtige richtung geben

ICh Habe ja oben mein Code indas Forum geladen und damit gezeit was ich habe

Aber gern lade ich ihn noch einmal hoch

Java:
//Johann Leidel, Tutor: Paul Hoffmann//
import java.util.Scanner;
public class Rechnen {

public static void main(String[] args) {

Scanner input = new Scanner(System.in);
        
    

int i = 0; 

while (i <= 5) {
	System.out.println("Geben Sie 1 ein, dann werden die Brüche addiert");
	System.out.println("Geben Sie 2 ein, dann werden die Brüche subtrahiert");
	System.out.println("Geben Sie 3 ein, dann werden die Brüche multipliziert");
	System.out.println("Geben Sie 4 ein, dann werden die Brüche dividiert");
	
		i = input.nextInt();
	
	
	        
        double a;
        double b;
        double c;
        double d;
        
        
        System.out.println("Eingabe des ersten Zählers ");
        a = input.nextInt();
        System.out.println("Eingabe des ersten Nenners ");
        b = input.nextInt();
   		System.out.println("Eingabe des zweiten Zählers ");
        c = input.nextInt();
        System.out.println("Eingabe des zweiten Nenners ");
        d = input.nextInt();

		double e = a/b; 
        double f = c/d;	  
	
	
	if (i == 1){
	System.out.println("das Ergebnis ist: " + (e + f));}
		
		else if (i == 2){
		System.out.println("das Ergebnis ist: "+ (e - f));}
		
		else if (i == 3){
		System.out.println("das Ergebnis ist: "+ (e * f));}
		
		else if (i == 4){
		System.out.println("das Ergebnis ist: "+ (e / f));}
		
		else if (i <= 5){
		System.out.println("Falsche Eingabe bitte erneut Eingabe ");}
		

        
        	
		
		
		}
		
		}
		
		}

Statt sich hier durch das Forum zu quälen, zeige ich dir, was du eigentlich hättest machen müssen. Und mache damit 90 % deiner Hausaufgaben.

Ich weiß gar nicht wie du das beurteilen kannst wenn du nicht mal meine Aufgabe gesehen hast?
Anmerkung: um diese Aufgabe zu lösen bedarf es noch einiger Teilaufgaben die dann ja nur noch 10 % nach deiner Meinung sind aber bei mir im Quelltext 3/4 ein nehmen. :bahnhof:

Schade das in diesem Forum so schnell verurteilt wird.


Aber dennoch bedanke ich mich für eure Einträge
 
Zuletzt bearbeitet:
Stell dir vor, aber du bist nicht der erste der wegen sowas hier anfragt. Und du bist nicht der erste, der hier keine Initivative zeigt.

Und du bist nicht der letzte, dem ich das sagen werde ;D

Diese Aufgaben sind doch standard in jeder Schule Uni Semster Lehrgang Ausbildung.
 
Stell dir vor, aber du bist nicht der erste der wegen sowas hier anfragt. Und du bist nicht der erste, der hier keine Initivative zeigt.

Und du bist nicht der letzte, dem ich das sagen werde ;D

Diese Aufgaben sind doch standard in jeder Schule Uni Semster Lehrgang Ausbildung.

made my day

MANN EY; WARUM IST HIER KEIN LIKE-BUUTON?????
Der fehlt auf jeden fall noch 😉

mfg
BH16
 
ICh Habe ja oben mein Code indas Forum geladen und damit gezeit was ich habe

Aber gern lade ich ihn noch einmal hoch

schön das ist aber nicht genau der gleiche code wie oben, der oben hatte einen fehler drinnen.
außerdem kannst du im neuen code dann schon mal zeigen was du probiert hast um deine aufgabe zu lösen
 
Schau dir mal die Grundlagen zu den Anweisungen in Java an (if, if-else. switch, for, while etc.).
Die Art wie du es versuchst zu lösen finde ich nicht gerade elegant:
 
EDIT: dann merkst du, dass deine letzte else-if (i<=5) Anweisung keinen Sinn gibt, weil du das dann immer als Ausgabe kriegst.
Das solltest du aber durch reine Überlegung schon erkennen..
 
nein, gibt man 6..n ein, beendet sich einfach die schleife ohen ausgabe

die fehlermeldung kann nur bei 5 und -n..0 kommen
da alles mit else läuft, kann zb bei 4 die meldung nicht kommen
 
Zuletzt bearbeitet von einem Moderator:
Hab übersehen, dass das ja else if Schleifen sind.
Sorry hatte als ich den Post geschrieben habe if Schleifen im Hinterkopf.

Switch wäre trotzdem eleganter🙂
 
not?
Wenn er Prüft ob eine Zahl i==1, i==2, .. i==5 ist und dann nochmal ne else if reinhaut mit i<=5, dann kriegt er in den Fällen für i=1, i=2, i=3, i=4, i=5 auch die Ausgabe :

("Falsche Eingabe bitte erneut Eingabe ");

Edit: Immer in diesem Beispiel

😉

ok hab gerade gesehen das dus eh schon bemerkst hast 😉

Java:
if (i == 1)
{
    System.out.println("das Ergebnis ist: " + (e + f));
}
else if (i == 2)
{
    System.out.println("das Ergebnis ist: "+ (e - f));
}        
else if (i == 3)
{
    System.out.println("das Ergebnis ist: "+ (e * f));
}
else if (i == 4)
{
    System.out.println("das Ergebnis ist: "+ (e / f));
}
else if (i <= 5)
{
    System.out.println("Falsche Eingabe bitte erneut Eingabe ");
}
wenn i = 1 ist dann kommt man in den ersten if zweig rein und danach in keinen anderen mehr. weiters prüft er ob i == 2, i==3 und i==4.
sprich wenn i 1,2,3 oder 4 ist dann kommt eine ausgabe mit "das ergebnis ist: ....".

wenn er eine zahl <=5 eingibt (sprich alles kleiner 0, 0 und 1-5) dann kommt die meldung von einer falschen eingabe. aber da er vorher schon überprüft ob die zahl 1,2,3 oder 4 ist kommt in diesen fällen die meldung nicht.
wenn die zahl >5 ist kommt dann sowieso nichts
 

Zurück
Oben