Tracy91 - 35
Anfänger
(offline)
Dabei seit 08.2010
4
Beiträge
|
|
Geschrieben am: 20.08.2010 um 14:11 Uhr
|
|
Gegeben ist die Fkt MinMax, welche 2 Ganzzahlen x und y übergeben bekommt und einen Wahrheitswert. Die Funktion liefert das Min der beiden Zahlen x und y, wenn der Wahrheitswert true ist, ansonsten wird das maximum der beiden Zahlen zurückgeliefert.
Hier ist die Methode, wär echt nett, wenn ihr mir sagen könnt, was ich falsch gemacht hab. Danke =)
import java.util.Scanner;
class minodermax {
static int minMax (int var, int min);
int x,y;
if (min==1) {
if (x < y) {
var=x;
}
else {
var=y;
}
}
else {
if (x < y) {
var=y;
}
else {
var=x;
}
}
return var;
}
public static void main(String[] args) {
Scanner in=new Scanner(System.in);
System.out.println("Wahr=1 oder falsch=0 ?");
min = in.nextInt();
System.out.println("Gebe eine Zahl ein! ");
x = in.nextInt();
System.out.println("Gebe eine Zahl ein! ");
y = in.nextInt();
int v=minMax(var, min);
if(min==1) {
System.out.println("Minimum: "+var);
}
else {
System.out.println("Maximum: "+var) ;
}
}
}
|
|
Nitek - 41
Champion
(offline)
Dabei seit 01.2003
4129
Beiträge
|
|
Geschrieben am: 20.08.2010 um 14:17 Uhr
|
|
Zitat von Tracy91: static int minMax (int var, int min);
Der ; scheint mir falsch, da müßte wohl eher eine { hin 
Mal abgesehn davon wirst du für x und y in deiner Methode immer 0 stehen haben, weil du sie als Methoden-Variabeln deklarierst. Die einfachste Lösung wäre wohl VOR die oben zitierte Zeile zu packen und Klassenvariablen draus zu machen - Hübsch ist's dann aber noch nicht
|
|
h3mpti - 38
Profi
(offline)
Dabei seit 05.2007
878
Beiträge
|
|
Geschrieben am: 20.08.2010 um 14:26 Uhr
|
|
Zitat von Nitek: Die einfachste Lösung wäre wohl VOR die oben zitierte Zeile zu packen und Klassenvariablen draus zu machen - Hübsch ist's dann aber noch nicht 
Dann aber das public nicht vergessen
Ich würde aber eher empfehlen sich die Grundkenntnisse von Java besser anzueignen.
|
|
DerMoe - 41
Profi
(offline)
Dabei seit 02.2007
450
Beiträge
|
|
Geschrieben am: 20.08.2010 um 14:27 Uhr
|
|
Wie nitek schon geschrieben hat ist x und y für die routine nicht verfügbar. entweder aus den variablen globale machen oder der routine einfach noch mitübergeben (was ich schöner finde )
Grüßle
|
|
Nitek - 41
Champion
(offline)
Dabei seit 01.2003
4129
Beiträge
|
|
Geschrieben am: 20.08.2010 um 14:32 Uhr
|
|
Zitat von h3mpti: Dann aber das public nicht vergessen
static sollte eigentlich reichen. public tut da keine Not
|
|
Page666 - 46
Profi
(offline)
Dabei seit 07.2005
612
Beiträge
|
|
Geschrieben am: 20.08.2010 um 14:33 Uhr
|
|
Zitat von Tracy91: Gegeben ist die Fkt MinMax, welche 2 Ganzzahlen x und y übergeben bekommt und einen Wahrheitswert. Die Funktion liefert das Min der beiden Zahlen x und y, wenn der Wahrheitswert true ist, ansonsten wird das maximum der beiden Zahlen zurückgeliefert.
Hier ist die Methode, wär echt nett, wenn ihr mir sagen könnt, was ich falsch gemacht hab. Danke =)
import java.util.Scanner;
class minodermax {
static int minMax (int var, int min);
int x,y;
if (min==1) {
if (x < y) {
var=x;
}
else {
var=y;
}
}
else {
if (x < y) {
var=y;
}
else {
var=x;
}
}
return var;
}
public static void main(String[] args) {
Scanner in=new Scanner(System.in);
System.out.println("Wahr=1 oder falsch=0 ?");
min = in.nextInt();
System.out.println("Gebe eine Zahl ein! ");
x = in.nextInt();
System.out.println("Gebe eine Zahl ein! ");
y = in.nextInt();
int v=minMax(var, min);
if(min==1) {
System.out.println("Minimum: "+var);
}
else {
System.out.println("Maximum: "+var) ;
}
}
}
Also eigentlich ist das ne recht triviale Aufgabenstellung, aber was du da programmiert hast - keine Ahnung. Konzentriere Dich mal auf die genaue Aufgabenstellung. Schon Deine Methodendeklaration ist falsch, da die Methode nur 2 Ganzzahlen übergeben bekommt, obwohl in der Aufgabenstellung 2 Ganzzahlen und ein Boolean verlangt werden, Ich verstehe auch nicht, warum Du Dir noch zusätzlich Integers (x und y) im Methodenrumpf definierst. Eigentlich brauchst Du zur Aufgabenlösung nur die übergebenen Variablen, und musst Dir keine Hilfsvariablen definieren. Dann noch die entsprechenden Fallunterscheidungen machen und das war´s.
https://www.youtube.com/user/wormcluster
|
|
Tracy91 - 35
Anfänger
(offline)
Dabei seit 08.2010
4
Beiträge
|
|
Geschrieben am: 20.08.2010 um 14:50 Uhr
|
|
Zitat von Page666: Zitat von Tracy91: Gegeben ist die Fkt MinMax, welche 2 Ganzzahlen x und y übergeben bekommt und einen Wahrheitswert. Die Funktion liefert das Min der beiden Zahlen x und y, wenn der Wahrheitswert true ist, ansonsten wird das maximum der beiden Zahlen zurückgeliefert.
Hier ist die Methode, wär echt nett, wenn ihr mir sagen könnt, was ich falsch gemacht hab. Danke =)
import java.util.Scanner;
class minodermax {
static int minMax (int var, int min);
int x,y;
if (min==1) {
if (x < y) {
var=x;
}
else {
var=y;
}
}
else {
if (x < y) {
var=y;
}
else {
var=x;
}
}
return var;
}
public static void main(String[] args) {
Scanner in=new Scanner(System.in);
System.out.println("Wahr=1 oder falsch=0 ?");
min = in.nextInt();
System.out.println("Gebe eine Zahl ein! ");
x = in.nextInt();
System.out.println("Gebe eine Zahl ein! ");
y = in.nextInt();
int v=minMax(var, min);
if(min==1) {
System.out.println("Minimum: "+var);
}
else {
System.out.println("Maximum: "+var) ;
}
}
}
Also eigentlich ist das ne recht triviale Aufgabenstellung, aber was du da programmiert hast - keine Ahnung. Konzentriere Dich mal auf die genaue Aufgabenstellung. Schon Deine Methodendeklaration ist falsch, da die Methode nur 2 Ganzzahlen übergeben bekommt, obwohl in der Aufgabenstellung 2 Ganzzahlen und ein Boolean verlangt werden, Ich verstehe auch nicht, warum Du Dir noch zusätzlich Integers (x und y) im Methodenrumpf definierst. Eigentlich brauchst Du zur Aufgabenlösung nur die übergebenen Variablen, und musst Dir keine Hilfsvariablen definieren. Dann noch die entsprechenden Fallunterscheidungen machen und das war´s.
ich habs statt mit boolean auf ne andere art versucht
|
|
ItsPayne - 41
Profi
(offline)
Dabei seit 12.2008
997
Beiträge
|
Geschrieben am: 20.08.2010 um 14:54 Uhr
Zuletzt editiert am: 20.08.2010 um 15:04 Uhr
|
|
Gegeben ist die Fkt MinMax, welche 2 Ganzzahlen x und y übergeben bekommt und einen Wahrheitswert. Die Funktion liefert das Min der beiden Zahlen x und y, wenn der Wahrheitswert true ist, ansonsten wird das maximum der beiden Zahlen zurückgeliefert.
Hier ist die Methode, wär echt nett, wenn ihr mir sagen könnt, was ich falsch gemacht hab. Danke =)
import java.util.Scanner;
class minodermax {
private int minMax (int iVal1, int iVal2, bool bIsMin)
{
int iRetVal = 0;
if(bIsMin == true)
{
if(iVal1 < iVal2)
{
iRetVal = iVal1;
}
else
{
iRetVal = iVar2;
}
}
else
{
if(iVal1 > iVal2)
{
iRetVal = iVal1;
}
else
{
iRetVal = iVar2;
}
}
return iRetVal;
}
Und aufrufen würd ich das ganze:
System.out.println(minMax(1,2,true).ToString()); //Ergebnis der funktion muss zur ausgabe in string konvertiert werden.
Ps: weiß nicht obs 100% java konform ist. Bin von C# ausgegangen. Musst halt bissel anpassen.
Wenn du lange genug in einen Abgrund blickst, blickt der Abgrund auch in dich hinein.
|
|
Page666 - 46
Profi
(offline)
Dabei seit 07.2005
612
Beiträge
|
|
Geschrieben am: 20.08.2010 um 14:56 Uhr
|
|
Zitat von Tracy91: ich habs statt mit boolean auf ne andere art versucht
Klar, seh ich auch. Aber warum denn auch nicht? Unnötige Verkomplizierung FTW!!!
https://www.youtube.com/user/wormcluster
|
|
Tracy91 - 35
Anfänger
(offline)
Dabei seit 08.2010
4
Beiträge
|
|
Geschrieben am: 20.08.2010 um 14:57 Uhr
|
|
Das mit dem prvate und so hatte/kenn ich noch nicht. Ich bin sozusagen noch Anfängerin.
|
|
ItsPayne - 41
Profi
(offline)
Dabei seit 12.2008
997
Beiträge
|
|
Geschrieben am: 20.08.2010 um 14:58 Uhr
|
|
das ganze statisch zu machen ist nicht falsch ...nur merkwürdig.
Wenn du lange genug in einen Abgrund blickst, blickt der Abgrund auch in dich hinein.
|
|
Page666 - 46
Profi
(offline)
Dabei seit 07.2005
612
Beiträge
|
|
Geschrieben am: 20.08.2010 um 15:00 Uhr
|
|
Zitat von ItsPayne: das ganze statisch zu machen ist nicht falsch ...nur merkwürdig. 
In ihrem Fall mit main-Methode in derselben Klasse ist das aber nötig, damit das Ganze läuft. Sonst meckert der Compiler.
https://www.youtube.com/user/wormcluster
|
|
ItsPayne - 41
Profi
(offline)
Dabei seit 12.2008
997
Beiträge
|
Geschrieben am: 20.08.2010 um 15:02 Uhr
Zuletzt editiert am: 20.08.2010 um 15:27 Uhr
|
|
Zitat von Page666: Zitat von ItsPayne: das ganze statisch zu machen ist nicht falsch ...nur merkwürdig. 
In ihrem Fall mit main-Methode in derselben Klasse ist das aber nötig, damit das Ganze läuft. Sonst meckert der Compiler.
Stimmt, die main hab ich glatt überlesen. Hab schon lange nimmer console programmiert.
€: Du wolltest ja noch wissen was du falsch hast:
static int minMax (int var, int min);
Hier kein ; setzen, wenn du die funktion definieren willst. da machst nen {} block.
Semikolon schließt ne anweisung ab. Der aufruf der funktion wäre eine anweisung, also minMax (1,2);
Da die funktion auch einen wert vom typ int zurück gibt, ist das ergebnis sinnvollerweise auch irgendwie zu verarbeiten wie z.B:
int iErgebnis = minMax (1,2);
Weiter..
int x,y;
Du deklarierst 2 variablen vom typ int, weist ihnen aber nie was zu. Daher werden die wohl default 0 sein.
Darauf dann irgendwelche abfragen wie if (x < y) | if (0 < 0) zu machen ist natürlich sinnlos.
Desweiteren überschreibst du deine parameter die der funktion übergeben werden und eigentlich die werte beinhalten die verarbeitet werden sollen. (var=x). Du setzt damit also den übergabeparameter auf 0.
Ich denk mal du wolltest es umgekehrt machen, also die 2 werte die die funktion übergeben bekommt in die 2 angelegten variablen schreiben:
x = var;
y= min;
Das was rechts vom = steht wird immer dem links zugewiesen.
Dann
if (min==1)
Ich denke du wolltest hier irgendwie den boolschen wert mit einbringen.
Der is zwar prinzipiell 1 und 0 und ein vergleich auf if(true == 1) müsste auch wahr sein, macht aber nicht so viel sinn.
Bei deiner abfrage wird die aussage immer dann wahr wenn min eben 1 ist. Min ist aber einer deiner zahlen, also keine ahnung was du da machen wolltest.
Ich würde dir mal einfach raten dich mit dem debugger vertraut zu machen und step by step durch deinen code gehn, dann siehst auch direkt wie die werte zugewiesen werden und was bei den abfragen raus kommt.
Wenn du lange genug in einen Abgrund blickst, blickt der Abgrund auch in dich hinein.
|
|
Page666 - 46
Profi
(offline)
Dabei seit 07.2005
612
Beiträge
|
|
Geschrieben am: 20.08.2010 um 15:10 Uhr
|
|
Und wenn ich gerade schon am Klugscheissen bin ...
Zitat von ItsPayne: Und aufrufen würd ich das ganze:
System.out.println(minMax(1,2,true).ToString()); //Ergebnis der funktion muss zur ausgabe in string konvertiert werden.
Nein, Java macht die Konvertierung automatisch
https://www.youtube.com/user/wormcluster
|
|
scw - 42
Experte
(offline)
Dabei seit 09.2002
1836
Beiträge
|
|
Geschrieben am: 20.08.2010 um 15:19 Uhr
|
|
Zitat von Page666: Und wenn ich gerade schon am Klugscheissen bin  ...
Zitat von ItsPayne: Und aufrufen würd ich das ganze:
System.out.println(minMax(1,2,true).ToString()); //Ergebnis der funktion muss zur ausgabe in string konvertiert werden.
Nein, Java macht die Konvertierung automatisch 
Genau!
Und wenn man .toString() machen will, sollte man einen komplexen Datentyp zurück geben und keinen simplen Also Integer und nicht int.
|
|
scw - 42
Experte
(offline)
Dabei seit 09.2002
1836
Beiträge
|
|
Geschrieben am: 20.08.2010 um 15:27 Uhr
|
|
Hab dir auch noch eine kurze Lösung. Kannst ja mal ausprobieren, ob das funktioniert:
public static int minMax(boolean isMin, int... values)
{
int value = values[0];
for(int i = 1; i < values.length; ++i)
{
if(isMin & values[i] < value
|| !isMin && values[i] > value)
{
value = values[i];
}
}
return value;
}
|
|