# ggT



## dreiarmigerwurm (6. Nov 2011)

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.


----------



## dreiarmigerwurm (6. Nov 2011)

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


----------



## Landei (6. Nov 2011)

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


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

... kan man zusammenfassen zu ...


```
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:

```
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.


----------



## faetzminator (6. Nov 2011)

Du kannst auch max in eine Methode auslagern:

```
public static int max(int a, int b) {
    if (a > b) {
        return a;
    }
    return b;
}
```
Oder einfacher:

```
public static int max(int a, int b) {
    return a > b ? a : b;
}
```
Dann noch ein max für 3 Zahlen:

```
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:

```
int meinMax = max(inputA, inputB, inputC);
System.out.println("max: " + meinMax);
```


----------



## dreiarmigerwurm (7. Nov 2011)

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 (7. Nov 2011)

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:


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

Profis schreiben:

```
public static int signum(double x) {
   return (x > 0) ? 1 : (x < 0) ? -1 : 0;
}
```


----------



## dreiarmigerwurm (7. Nov 2011)

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 :<


----------



## Camill (7. Nov 2011)

Aus der Fehlermeldung geht hervor das die Variable "a" nicht deklariert wurde.


----------



## dreiarmigerwurm (7. Nov 2011)

Und wie kann man dieses Problem beheben?


----------



## Camill (7. Nov 2011)

Indem man die Variable deklariert?


----------



## dreiarmigerwurm (7. Nov 2011)

Ich bin ein Anfänger ich weiss nicht wie dies geht.
Ein Beispiel wäre hilfreich


----------



## SlaterB (7. Nov 2011)

Galileo Computing :: Java ist auch eine Insel - 2 Imperative Sprachkonzepte

2.3.2 Variablendeklarationen


----------



## Camill (7. Nov 2011)

Was genau hast du denn vor und wie sieht dein bisheriger Quellcode aus ?


----------



## dreiarmigerwurm (7. Nov 2011)

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 (7. Nov 2011)

Was versuchst du durch die folgenden Zeilen denn zu erreichen ?

```
input(a);
input(b);
input(c);
output(max);
```


----------



## dreiarmigerwurm (7. Nov 2011)

und diese hier


public class Signumfunktion {

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


----------



## dreiarmigerwurm (7. Nov 2011)

durch input versuche ich die variablen in das programm zu integrieren
und durch output die letzliche ausgabe des maximalen werts


----------



## Camill (7. Nov 2011)

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:

```
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 (8. Nov 2011)

Camill hat gesagt.:


> 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:


```
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:In die Zwischenablage kopieren


-TAGS, WORAUF SCHON IN GROSSEN ROTEN LETTERN ÜBER DEM BEITRAGSFENSTER HINGEWIESEN WIRD.[/SIZE][/COLOR][/b]

*


----------



## dreiarmigerwurm (8. Nov 2011)

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).


----------



## SlaterB (8. Nov 2011)

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


----------



## dreiarmigerwurm (8. Nov 2011)

```
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 


```
public class Signumfunktion {

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


----------



## dreiarmigerwurm (8. Nov 2011)

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.


----------



## dreiarmigerwurm (8. Nov 2011)

@ 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 :<


----------



## SlaterB (8. Nov 2011)

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


----------



## dreiarmigerwurm (8. Nov 2011)

Das Problem ist nur, dass wenn noch eine } kommt kommen 8 weitere Errors hinzu


----------



## SlaterB (8. Nov 2011)

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


----------



## dreiarmigerwurm (8. Nov 2011)

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.;(


----------



## SlaterB (8. Nov 2011)

jeder Mensch kann Java lernen, zumindest bis zum Niveau dieser Aufgaben, man muss nur anfangen
Galileo Computing :: Java ist auch eine Insel - index

über Hausaufgaben zu lamentieren ist keine Lösung


----------



## dreiarmigerwurm (8. Nov 2011)

Bis 12 Uhr schaffe ich es bestimmt noch !


----------



## chalkbag (8. Nov 2011)

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


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

2. eine Klammer fehlt


```
public class Signumfunktion {

  public static int signum(int x) {
    if (x > 0) {
      ...
    } else if(x < 0) {
      ... 
    } else {
      ...
    }
  }
}
```


----------



## Landei (8. Nov 2011)

chalkbag hat gesagt.:


> 1. Variablen nicht initialisieren
> 
> 
> ```
> ...



Seit wann kann man int-Variablen mit Strings initialisieren?


----------



## chalkbag (8. Nov 2011)

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...



```
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);
    }
 
}
```


----------

