ggT

Guten Tag liebe Community,

bitte um RAT,HILFE, sonstiges komme einfach nicht voran :bahnhof:
Bitte um Verständnis, dass ich ein totaler Anfänger darin bin. Somit bitte für "ottonormalbürger" verständlich machen :lol:

Kurz vorweg: Seit kurzem studiere ich Wirtschaftsinformatik und habe nun das Fach Java- Programmierung. (Fach Informatik auch vorhanden).
Für Java haben wir jetzt folgende Übungsaufgaben bekommen, wo ich mein Kopf schon 100mal gegen den Bildschirm gehauen habe:lol::autsch: .
Ich gebe mal die Aufgaben an und nachträglich im Kommentar meine vermutlichen Lösungen...

1)
Gegeben ist folgender Algorithmus:
Eingabe:
a: beliebige ganze Zahl
b: beliebige ganze Zahl
c: beliebige ganze Zahl
Verarbeitung:
<<bestimme die größte Zahl der drei Zahlen a, b und c >>
Ausgabe:
max: größte Zahl
Bearbeiten Sie die folgenden Teilaufgaben:
a) Entwickeln Sie ein funktionierendes Java-Programm.
b) Welches Problem tritt auf, wenn 5, 10 oder auch noch mehr Zahlen als Eingabe
gegeben sind? Wie können Sie dieses Problem lösen?
Verfassen Sie Ihre Antwort als Kommentar über public class <Dateiname> {.
Sie sollen KEIN funktionierendes Java-Programm entwickeln.

2)
In der Mathematik ist die Signum- oder auch Vorzeichen-Funktion wie folgt definiert:

sgn(x):={+1 x>0
{0 x=0
{-1 x<0

Entwickeln Sie ein Programm, welches eine Zahl einliest und das Ergebnis der Signum-
Funktion wieder ausgibt.

Vielen Dank für die Hilfe im Voraus.
 
Zuletzt bearbeitet von einem Moderator:
Korrektur

sgn(x):=
{+1 x>0
{0 x=0
{-1 x<0

Bin persönlich nur bis Aufgabe 1 gekommen :<

input(a);
input(b);
input(c);

if (a > b) {
if (a > c) {
max = a;
}
} else {
if (b > c) {
max = b;
} else {
max = c;
}
}
output (max);

wäre sehr nett, wenn ihr das korrigieren könntet und mir erklären könnt, wie 1B (wie würde hier eine Schleife aussehen?) und Aufgabe 2) gehen
Vielen Dank
 
Zuletzt bearbeitet:

Landei

Top Contributor
Deine Lösung stimmmt, aber wie wäre es einfach mit Ausprobieren?

Java:
if (a > b) {
   if (a > c) { 
     max = a;
   }
}...

... kan man zusammenfassen zu ...

Java:
if (a > b && a > c) { 
     max = a;
}...

Ein idiotensicherer Algorithmus, der auch für mehr als 3 Zahlen funktionert:

[c]max[/c] = erste Frage kommende Zahl
für jede weitere in Frage kommende Zahl z : [c]if (z > max) max = z;[/c]

In deinem Fall wäre das:
Java:
int max = a;
if (b > max) { max = b; }
if (c > max) { max = c; }

Die Signum-Aufgabe ist nun wirklich simpel, einfach die drei Fälle abfragen.
 
Zuletzt bearbeitet:

faetzminator

Gesperrter Benutzer
Du kannst auch max in eine Methode auslagern:
Java:
public static int max(int a, int b) {
    if (a > b) {
        return a;
    }
    return b;
}
Oder einfacher:
Java:
public static int max(int a, int b) {
    return a > b ? a : b;
}
Dann noch ein max für 3 Zahlen:
Java:
public static int max(int a, int b, int c) {
    return max(a, max(b, c));
}
Und dann kann man das schon ganz einfach so verwenden:
Java:
int meinMax = max(inputA, inputB, inputC);
System.out.println("max: " + meinMax);
 
yo vielen dank.. ich sehe es gibt nahezu unendlich viele möglichkeiten o_o

zu aufgabe 2. ginge diese antwort oder gibts bessere alternativen?

input(x);

if (x > 0) {
output "+1";
}
if (x = 0)
output "0";
}
if (x < 0)
output "-1";
 

Landei

Top Contributor
Bis auf ein wenig Syntax richtig. Ganz wichtig ist der Unterschied zwischen Zuweisung [c]=[/c] und Test auf Gleichheit [c]==[/c].

Eine Möglichkeit wäre:

Java:
public static int signum(double x) {
   if (x > 0) {
       return 1; 
   } else if(x < 0) {
       return -1; 
   } else {
       return 0;
   }
}

Profis schreiben:
Java:
public static int signum(double x) {
   return (x > 0) ? 1 : (x < 0) ? -1 : 0;
}
 
Bei der Eingabe von :

public class GroessteZahl {

public static void main(String[] args) {
// TODO Auto-generated method stub

// Eingabe

input(a); ...und so weiter

kommen lauter Errors "a cannot be resolved to a variable"

kann mir einer bitte weiterhelfen :<
 
sollte so aussehen und max ausgegebn werden


public class GroessteZahl {

public static int main(String[] args) {
// TODO Auto-generated method stub

// Eingabe


input(a);
input(b);
input(c);

// Verarbeitung

int max = a;
if (b > max) { max = b; }
if (c > max) { max = c; }

// Ausgabe

output(max);

}

}
 

Camill

Bekanntes Mitglied
Was versuchst du durch die folgenden Zeilen denn zu erreichen ?
Java:
input(a);
input(b);
input(c);
output(max);
 

Camill

Bekanntes Mitglied
Ich weiß nicht woher du das Input/Output beziehst, mir zumindest sagt das nichts.

Die Variablen könntest du wiefolgt deklarieren, nachzulesen unter dem von "SlaterB" geposteten Link:
Code:
int a, b, c;

Wie ihr im Studium etwas Einliest/Ausgibt weiß ich nicht(evt. speziell vereinfachte Klassen erhalten?). Ansonsten empfehle dir dich vorerst mit den Klassen BufferedReader & InputStreamReader zu befaßen, damit dürfte dir das Einlesen schon einmal gelingen.
 

Landei

Top Contributor
Ansonsten empfehle dir dich vorerst mit den Klassen BufferedReader & InputStreamReader zu befaßen, damit dürfte dir das Einlesen schon einmal gelingen.

Zu kompliziert für Anfänger, [c]Scanner[/c] ist wesentlich bequemer.

Um mal ein Beispiel zu geben:

Java:
import java.util.Scanner;

public class Signumfunktion {

  public static int signum(double x) {
    if (x > 0) {
     return 1;
    } else if(x < 0) {
     return -1;
    } else {
      return 0;
    }
  }

  public static void main(String[] args) {
     Scanner scanner = new Scanner(System.in);
     System.out.prittln("Eingabe x");
     double x = scanner.nextDouble();
     int sign = signum(x);
     System.out.println("signum(" + x + ") = " + sign);
  }
}

Und noch ein dezenter Hinweis an den TO:

NIMM BITTE
Java:
-TAGS, WORAUF SCHON IN GROSSEN ROTEN LETTERN ÜBER DEM BEITRAGSFENSTER HINGEWIESEN WIRD.[/SIZE][/COLOR][/b]
 
Zuletzt bearbeitet:
Ja ich habe die rote farbe und den text darin zur kenntnis genommen .sry

Nochmal zu den Aufgaben. Wenn ich dein BeispieL übernehme läuft alles einwandfrei bis ich Checkstyle aktiviere. Aber ich brauche Checkstyle und es muss alles korrekt sein damit ich diese Hausaufgabe "Submitten" kann (hochladen auf die Uni-Seite).
 
S

SlaterB

Gast
vielleicht weiß jemand was, aber bedenke:
dies ist ein Forum zu Java, nicht zu unbekannten Sonderprogrammen außerhalb von Java
 
Java:
public class GroessteZahl {

    public static void main(String[] args) {
        // TODO Auto-generated method stub

        //Eingabe
        
        
        int a;
        int b;
        int c;

        //Verarbeitung
        
        int max = a;
        if (b > max) { max = b; }
        if (c > max) { max = c; }
        
        
       //Ausgabe
        
        System.out.print(max);
    }

}

und

Java:
public class Signumfunktion {

        public static int signum(int x) {
            if (x > 0) {
                return 1; 
            } else if(x < 0) {
                return -1; 
            } else {
                return 0;
            }
     }
 
Bei dem ersten gibt "Checkstyle" mir die Fehler bei Zeile: 16,17.18,21.

Variabel a,b,c not initialized.
und fehlerhafte Einrücktiefe.


Beim zweiten gibt "Checkstyle" mir die Fehler bei Zeile: 12.

Syntax error, insert "}" to complete ClassBody.
 
@ SlaterB

Ich denke dies betrifft Java und kein anderes Sonderprogramm ^^. Die Java Programmierung wird mit dem Programm ( Eclipse ) betrieben.

Bitte nochmal um Rat, solange Checkstyle mekert kann ich die HA nicht abschicken :<
 
S

SlaterB

Gast
was hat das mit Checkstyle zu tun, das kompliliert doch gar nicht, das hast du damit auch noch gar nicht ausführen und testen können?!
das ist übrigens auch nicht der Code von Landei? also der erste nicht, das zweite ist halb kopiert, mit einer Klammer zu wenig

was ist denn jetzt das Thema hier, man kann dir doch nicht für jede einzelne Klasse/ Codeschnippsel vorsagen wo du noch eine Klammer einfügen musst?
fange mit einfachen Hello World-Programmen an, lerne Schritt für Schritt was Java ist, Variable, Methode, Klasse und Objekt
 
S

SlaterB

Gast
weil dir die Grundlagen drei Kapitel vorher fehlen, z.B. geraten dass jede public-Klasse in eine eigene Datei gehört,
andere Grundlagen wären, im Forum Fehlermeldungen auch zu posten, dann muss keiner raten ;)

arbeite vielleicht vorerst mit nur einer Datei, einer Klasse und leeren Methoden und dann schrittweise nach und nach bisschen Code hinein
 
Ich bitte hochachtungsvoll um Entschuldigung, wenn ihr nicht wisst was ich meine.
Unser Dozent bringt uns dann wohl falsch Java bei :<, ändert aber nix daran, dass ich diese HA abgeben muss.;(
 

chalkbag

Bekanntes Mitglied
Die Aufgabenstellung sagt doch deutlich
Sie sollen KEIN funktionierendes Java-Programm entwickeln.

also ist eine Validierung durch checkstyle nicht notwendig, ansonsten studierst du alleine? Wenn der Dozent so schlecht ist, muss es doch bestimmt 100 andere ahnungslose Ersties geben.


Als WiFi ist Englisch eigentlich ziemlich wichtig, wie wollt ihr sonst mal richtig "Consulten" ::joke::
Die Fehlermeldungen sagen es doch relativ deutlich.


1. Variablen nicht initialisieren

Java:
        int a = args[0];
        int b = args[1];
        int c = args[2];

2. eine Klammer fehlt

Java:
public class Signumfunktion {

  public static int signum(int x) {
    if (x > 0) {
      ...
    } else if(x < 0) {
      ... 
    } else {
      ...
    }
  }
}
 
Zuletzt bearbeitet:

chalkbag

Bekanntes Mitglied
Ich hab einen Zauberstab, aber ich leihe ihn dir auch mal gerne.

[Edit]

Aber um nicht nur schnippisch zu sein, natürlich müsste man ja auch dann noch ein paar Prüfungen einbauen...


Java:
public class GroessteZahl {
 
    public static void main(String[] args) {
        //Eingabe
        
    	if (args == null || args.length < 3){
    		System.err.println("Keine 3 Zahlen per Argument uebergeben.");
    		return;
    	}
    	int a;
        try{
        	a = Integer.parseInt(args[0]);
        }catch(NumberFormatException nfe){
        	System.err.println("Zahl 1 hat keinen gueltigen Numerischen Wert, sondert ist vom Wert\""+args[0]+"\"");
        	return;
        }
        
        int b;
        try{
        	b = Integer.parseInt(args[1]);
        }catch(NumberFormatException nfe){
        	System.err.println("Zahl 2 hat keinen gueltigen Numerischen Wert, sondert ist vom Wert\""+args[1]+"\"");
        	return;
        }
        
        int c;
        try{
        	c = Integer.parseInt(args[2]);
        }catch(NumberFormatException nfe){
        	System.err.println("Zahl 3 hat keinen gueltigen Numerischen Wert, sondert ist vom Wert\""+args[2]+"\"");
        	return;
        }

 
        //Verarbeitung
        
        int max = a;
        if (b > max) { max = b; }
        if (c > max) { max = c; }
        
        
       //Ausgabe
        
        System.out.print(max);
    }
 
}
 
Zuletzt bearbeitet:

Neue Themen


Oben