Dies ist eine statische Kopie unseres alten Forums. Es sind keine Interaktionen möglich.
This is a static copy of our old forum. Interactions are not possible.

panne

Praktikant

  • "panne" started this thread

Posts: 12

Date of registration: Jan 31st 2002

1

Monday, May 13th 2002, 4:58pm

auch Java, 3. Aufgabe

Jooh, hi.





























Wir kommen mit der ProgII-Aufgabe nicht klar:














Unser Programm liest sich zwar sehr schön,














lässt sich anstandlos kompilieren,














und dürfte nach meinem Logik-Verständnis auch einwandfrei funktionieren














(außer das parseInt() ne Typ-Exception schmeißt, wenn die Parameter keine Zahlen sind).














Tut's aber nicht. Gibt zwar ggf. unsere Fehlermeldungen von wegen nicht 3 Argumente bzw. obengenannte Exception aus, aber wenn die Parameter korrekt drei Zahlen sind, rattert die Kiste und das war's.














Keine Ausgabe oder so.





























Hat hier irgendjemand ne Ahnung, warum dem so ist???



























Ist leider nicht mehr so richtig eingerückt durch's HTML,












hoffe man kann's trotzdem einigermaßen lesen...



































public



class Loop



{







public



static



void



print( Object obj )



{



if( obj instanceof Integer ) // wenn Objekt Instanz von Integer



{



Integer x = (Integer) obj; // Objekt in Integer-Objekt umwandeln



System.out.print( x.intValue() + " " ); // und ausgeben



}



else



{



System.out.println( "unbekanntes Objekt" ); // ansonsten Fehlermeldung



}



}







public



static



void



main( String[] arguments )



{



if( arguments.length != 3 ) // Test, ob genau 3 Argumente



{



System.out.println( "Falsche Anzahl von Argumenten!" );



System.out.println( "Bitte drei Zahlen als Parameter angeben:" );



System.out.println( "Anfangs- und Endwert, Schrittweite." );



}



else



{ /* wenn drei Argumente, die Integer-Zahlen auslesen - gibt Fehlermeldung (von Java!) wenn keine Zahlen */



int begin = Integer.parseInt( arguments[ 0 ] );



int end = Integer.parseInt( arguments[ 1 ] );



int step = Integer.parseInt( arguments[ 2 ] );







if( begin <= end )



{



for( int i = begin; i > end; i += step )



{



Integer x = new Integer( i );



Loop.print( x );



}



}



else



{



for( int i = begin; i < end; i -= step )



{



Integer x = new Integer( i );



Loop.print( x );



}



}



}



}



}







Nieder mit der Schwerkraft! Es lebe der Leichtsinn!!!

Zypressen Hügel

Junior Schreiberling

Posts: 244

Date of registration: Dec 22nd 2001

2

Monday, May 13th 2002, 5:22pm

die kiste "rattert"? was rattert sie denn? fehlermeldungen oder gar nix?
wenn fehlermeldungen rausrattern, wäre vielleicht ne möglichkeit, die instanziierung von Integer x = new Integer (i) so zu gestalten, dass ausserhalb der for-schleife ein objekt der klasse Integer angelegt wird und innerhalb der for-schleife dem objekt werte zugewiesen werden, also etwa:

...
Integer x;
for(...
{
x = new Integer (i);
....
}
...

kanns hier leider nicht ausprobieren, obs klappt. vielleicht hilft es ja
Man kann auch ohne Spass Alkohol haben 8)

panne

Praktikant

  • "panne" started this thread

Posts: 12

Date of registration: Jan 31st 2002

3

Monday, May 13th 2002, 5:39pm

Quoted

Original von Zypressen Hügel


die kiste "rattert"? was rattert sie denn? fehlermeldungen oder gar nix?









Die Box ist einfach bloß 1 - 2 sec beschäftigt, dann erscheint ein neuer Eingabeprompt. Keine Fehlermeldungen, gar nix.


:(
Nieder mit der Schwerkraft! Es lebe der Leichtsinn!!!

MAX

Senior Schreiberling

  • "MAX" is male

Posts: 822

Date of registration: Dec 11th 2001

Location: Hannover

4

Monday, May 13th 2002, 5:43pm

Also

Ich habe fast das gleiche, nur statt Loop.print(x) rufe ich einfach print(x) auf.
Und dann noch kann man bei der ausgabe folgendes verwenden:
System.out.print(((Integer)obj).intValue()+" ");
Spart man also eine Zeile.
Sonst sehe ich keine Fehler.
mfg
MAX

panne

Praktikant

  • "panne" started this thread

Posts: 12

Date of registration: Jan 31st 2002

5

Monday, May 13th 2002, 5:46pm

@Zypressenhügel:



Hab's trotzdem mal probiert, ändert erwartungsgemäß garnix.






Wenigstens etwas, das funktioniert ;)





@MAX:


das 'Loop.' hab ich bei der Fehlersuche eingefügt, um sicher zu gehen,


das meines verwendet wird.


Eine Zeile einzusparen bringt mich leider auch nicht weiter,


außerdem will ich es später auch noch lesen können...


Funzt deines denn, wenn es fast genauso sein soll?
Nieder mit der Schwerkraft! Es lebe der Leichtsinn!!!

MAX

Senior Schreiberling

  • "MAX" is male

Posts: 822

Date of registration: Dec 11th 2001

Location: Hannover

6

Monday, May 13th 2002, 5:53pm

Einwandfrei!!!

Keine Probleme! Alles klaro! Wie gesagt genau so, nur dass ich keine Überprüfung vorher habe, ob drei oder mehr weniger Argumkente da sind. Es ist mir sch... egal!
mfg
MAX

MAX

Senior Schreiberling

  • "MAX" is male

Posts: 822

Date of registration: Dec 11th 2001

Location: Hannover

7

Monday, May 13th 2002, 5:55pm

Ja Ja Ja

Ich sehe! Ich sehe! Ich sehe deinen Fehler!!!
Schaue noch mal deine main Mezhode an!!!
Bei dir steht:
public static void main (String[] arguments) ....
Es muss aber stehen:
public static void main (String arguments[])......

Klar?????????
mfg
MAX

cowhen

Muuuh!

  • "cowhen" is male

Posts: 1,374

Date of registration: Dec 13th 2001

8

Monday, May 13th 2002, 6:12pm

nope (@max)

Quoted

Bei dir steht:
public static void main (String[] arguments) ....
Es muss aber stehen:
public static void main (String arguments[])......


das ist kein fehler, beides geht. habe es ausprobiert und und man kann beide o.g. versionen benutzen. String[] arguments steht sogar so im vorlesungsskript (z.b. folie 33 aber auch alle folien zum ersten java prog).



mfg

cowhen


PS: also ehrlich max, sowas hättest du auch nachkucken können... vor dem posten... X(
plenty of time to relax when you are dead

Zypressen Hügel

Junior Schreiberling

Posts: 244

Date of registration: Dec 22nd 2001

9

Monday, May 13th 2002, 6:36pm

also, ich sehe den fehler nicht... versuchs mal hiermit, obwohl ich keinen grundlegenden unterschied feststellen kann

class Loop
{
public static void main(String[] args)
{
try
{
int start = Integer.parseInt(args[0]);
int end = Integer.parseInt(args[1]);
int step = Integer.parseInt(args[2]);
Object obj = new Integer(Integer.parseInt(args[0]));
if(obj instanceof Integer)
{
if(start < end)
{
for(int counter = start; counter <= end; counter += step)
{
obj = new Integer(counter);
print(obj);
}
}
else
{
for(int counter = start; counter >= end; counter -= step)
{
obj = new Integer(counter);
print(obj);
}
}
}
else
{
System.out.println("Nein");
}
}
catch(Exception e)
{
System.out.println("Fehlerhafte Argumente!!!");
System.exit(-1);
}
}
static void print(Object o)
{
Integer i = (Integer) o;
System.out.print(i.intValue()+" ");
}
}
Man kann auch ohne Spass Alkohol haben 8)

MAX

Senior Schreiberling

  • "MAX" is male

Posts: 822

Date of registration: Dec 11th 2001

Location: Hannover

10

Monday, May 13th 2002, 6:44pm

Peinlich

Quoted

das ist kein fehler, beides geht. habe es ausprobiert und und man kann beide o.g. versionen benutzen. String[] arguments steht sogar so im vorlesungsskript (z.b. folie 33 aber auch alle folien zum ersten java prog).

Tatsächlich! Sorry! Werde in Zukunft mehr aufpassen.
Sonst sehe ich den Fehler nicht!
mfg
MAX

panne

Praktikant

  • "panne" started this thread

Posts: 12

Date of registration: Jan 31st 2002

11

Monday, May 13th 2002, 7:19pm

Quoted

Original von Zypressen Hügel
also, ich sehe den fehler nicht... versuchs mal hiermit, obwohl ich keinen grundlegenden unterschied feststellen kann



:rolleyes: Versuchs mal hiermit ist gut -
Will ja nicht bloß abschreiben ;)

Auch ein Vergleich der zwei Progs hat uns noch nicht weitergebracht. Aber das catch(Exception)-Dingen muss ich mir mal näher ansehen...
Übrigens möchte ich mal anmerken, das dein Prog nicht ganz der Aufgabe entspricht: dort steht eindeutig, das die print( obj )-Methode die Fehlermeldung bei nicht-Integer-Objekten ausgeben soll, nicht das Programm an sich.
Nur mal so, vielleicht willst du es noch ändern.


Wobei mir auffällt: da es bei nicht-Integer-Objekten eh zu einer Typ-Exception kommt und das Programm abbricht, kann die print(obj) sowieso nie ihr Sprüchlein aufsagen...
Nieder mit der Schwerkraft! Es lebe der Leichtsinn!!!

  • "Joachim" is male

Posts: 2,863

Date of registration: Dec 11th 2001

Location: Hämelerwald

Occupation: Wissenschaftlicher Mitarbeiter (Forschungszentrum L3S, TU Braunschweig)

12

Monday, May 13th 2002, 9:34pm

Quoted

Original von panne
Hat hier irgendjemand ne Ahnung, warum dem so ist???
Du hast bei den for-Schleifen die Ablaufbedingungen falsch gesetzt. Das zweite "Argument" der for-Schleife ist eine "solange, wenn"- und keine "solange, bis"-Bedingung. Verändere einfach die Relationen entsprechend, und dann stimmt es. So wie du es gepostet hast, werden die Schleifen nie durchlaufen.

Quoted

Ist leider nicht mehr so richtig eingerückt durch's HTML, hoffe man kann's trotzdem einigermaßen lesen...
Es gibt einen Formatierungsmodus, mit dem man z. B. Quellcode gut posten kann. Ist oben mit dem Doppelkreuz (#) gekennzeichnet.
The purpose of computing is insight, not numbers.
Richard Hamming, 1962

Zypressen Hügel

Junior Schreiberling

Posts: 244

Date of registration: Dec 22nd 2001

13

Monday, May 13th 2002, 9:43pm

Quoted

Übrigens möchte ich mal anmerken, das dein Prog nicht ganz der Aufgabe entspricht: dort steht eindeutig, das die print( obj )-Methode die Fehlermeldung bei nicht-Integer-Objekten ausgeben soll, nicht das Programm an sich.


stimmt, hast recht. danke :)
Man kann auch ohne Spass Alkohol haben 8)

panne

Praktikant

  • "panne" started this thread

Posts: 12

Date of registration: Jan 31st 2002

14

Tuesday, May 14th 2002, 10:11am

Quoted

Original von Joachim
Du hast bei den for-Schleifen die Ablaufbedingungen falsch gesetzt. Das zweite "Argument" der for-Schleife ist eine "solange, wenn"- und keine "solange, bis"-Bedingung. Verändere einfach die Relationen entsprechend, und dann stimmt es. So wie du es gepostet hast, werden die Schleifen nie durchlaufen.

Ja, cool, DANKE!!!
Das war's! Rettung in letzter Sekunde, sozusagen!

Quoted

Es gibt einen Formatierungsmodus, mit dem man z. B. Quellcode gut posten kann. Ist oben mit dem Doppelkreuz (#) gekennzeichnet.

Aha, auch nicht schlecht... Ich hatte es mit einfach mit dem &lt;pre&gt;-HTML-Tag probiert, aber da wurde der Text zu weit auseinander gerissen - 2 od. 3 Zeilen Abstand... Gut zu wissen.

Danke nochmal,
bis nachher und so.
panne
Nieder mit der Schwerkraft! Es lebe der Leichtsinn!!!