mehrere sachen :(

Dieses Thema im Forum "Programmierung & Entwicklung" wurde erstellt von J0rd4N, 7. Oktober 2005 .

Schlagworte:
Status des Themas:
Es sind keine weiteren Antworten möglich.
  1. Diese Seite verwendet Cookies. Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies. Weitere Informationen
  1. #1 7. Oktober 2005
    in der schule lernen wir gerade mit dem jbuilder programmieren (auf m iTG).
    wir hatten das fach jetzt 6 stunden oder so und ich blick nich besondern viel, ich versuch aber wirklich mein aller bestes zu geben!!

    1.
    Code:
    public class Unbenannt1 {
    
     public static void main(String[] args) {
    for (int i=0;i<args.length;i++)
     System.out.println(args[i]);
     }
     }
    was war das ueberhaupt nochmal und wieso meint der jbuilder beim testen davon einfach ne 100% cpu auslastung zu geben? notiert dazu hab ich "i++ erhoeht immer um +1 ...... i <-- i+1" is das vielleicht irgendwas zum zaehlen das ganze? mit "int" sind ja ganze zahlen gemeint, mehr weiss ich leider nich =( zum notiern is da sowieso keine zeit, ich find das wird zu schnell durchgehauen.
    2.
    Code:
    args[0]+" "+ 
    woerter nebeneinander .. und wo "flechte" ich das ganze ein? was wenn ich mal so 500 woerter nebeneinander haben will? muss ich dann immer das selbe nur mit ner anderen "args" hinscheriben?

    3.
    CLiCK (bild)
    was hab ich hier schon wieder falsch gemacht :( und wieso lernen wir jetzt schon was ueber mehrere klassen usw .. mein kumpel (informatikstudent) meint auch das waere viel zu frueh!

    --------------

    ich hab echt den kompletten durchblick verloren, ich versuch aber jetzt noch schnell den anschluss wieder zu bekommen, hoffentlich kann einer helfen, wuerde mich sehr freun
     

  2. Anzeige
  3. #2 7. Oktober 2005
    Hi, versuche dir mal zu helfen...

    1)
    Bei aufrufen des Programms kannst du Argumente übergeben (wenn du es in der Command line mit java progname bla blub ) aufrufst bzw. es in der Entwicklungsumgebung einstellst.

    Dieser Codeabschnitt oben, gibt diese Argumente aus. String[] ist nen String-Array mit Namen args (steht für Argumente). In der Schleife (for..) wird nun von 0 (erste Element im Array) bin zum Ende (args.length() gibt die Anzahl der Element aus) das Array durchlaufen. Mit System.out.println(args) wird nun jedes Element ausgegeben. Die Schleife an sich ist aufgebaut aus Zähler (int i = 0), Endbedingung (zähler muss echt kleiner als die Anzahl der Argumente sein) und dem erhöhen des Zählers mit zähler++ (in deinem Fall i). So wird i immer um 1 erhöht. Unterschied zwischen i++ und ++i lernt ihr wahrscheinlich später noch.

    2)
    Wenn du 500 mal was ausgeben willst (das mit den Argumenten ist schlecht, denn es müssen dann 500 da sein ) machst du das am besten so.

    Code:
    public static void main(String[] args) {
    for (int i=0;i<500;i++)
     System.out.print(i+" ");
     }
     }
    Somit werden die Zahlen von 0 - 499 nebeneinander ausgegeben.
    Die Schleife solltest du jetzt eigentlich verstehen, wichtig ist nur das du nicht println() (für printline) nimmst, sondern nur print, da sonst immer ne neue Zeile angefangen würden. In der Klammer hänge ich noch mit +" " ein Leerzeichen an.

    3)
    Im Programm im Bild sollte nen Fehler sein.
    xAnf muss erst als double angelegt werden, also Double xAnf;
    Die Zeile müsste dann richtig heisen:

    Code:
    double xAnf = Double.parseDouble(argumentenliste[0]);
    Dabei wird der String aus der Argumentenliste (siehe oben ) in nen Double umgewandelt. Dazu brauchst aus der Klasse Double (deswegen GROß geschrieben) die Methode parseDouble(), die nen String erwartet und nen Double zurückgibt.

    Schau dir das mal in der Api an, dann solltest du das verstehen.

    Hoffe dir geholfen zu haben und hoffe das auch alles richtig war.
    Sollten noch Fragen sein, dann frag.
    Wenns geholfen hat wäre ne Bewertung nett. Bin noch recht neu hier und kannst gebrauchen :)

    Mfg Sinus2K
     
  4. #3 7. Oktober 2005
    bei java kann ich dior leider nicht helfen, aber wenn du echt nich klarkommst damit weil du meinst dass es zu schnell gemacht wird würde ich dir am besten mal empfehlen deinen lehrer nach der stunde mal drauf anzusprechen, wenn du jetzt schon probleme hast un es weiter so geht wirds denke ich mal nich besser..
    MfG,
    didda
     
  5. #4 8. Oktober 2005
    Zuletzt von einem Moderator bearbeitet: 15. April 2017
    wow, danke fuer die lange und qualitativ hochwertige antwort Sinus2K!
    hast direkt mal nen 10er bekommen :)

    also es wird mir schon mehr klar .. i++ heisst einfach er zaehlt zu diesem i immer einen drauf ..

    und bei 3) bin ich jetz schon weiter ..

    aitdiezweite3as.jpg
    {img-src: //img329.imageshack.us/img329/2885/aitdiezweite3as.jpg}


    frage mich nur was ich in die zeile 22
    Code:
    {System.out.println();}
    in die klammer hauen soll .. er soll ja sozusagen die werte ausspucken, nur wie sag ich das ? ^^

    @didda: ja hast schon recht .. nur das is da immer alles so stressig und der hats dann auch noch brutal eilig .. is ja nur einmal die woche 2h (gut trozdem isses auf m iTG LEBENSWiCHTiG ^^) .. hab direkt danach ma meine schulkollegen gefragt .. nur ich war da so aus m wind .. bei mir brauchts bisschen laenger bis ich das check ..
     
  6. #5 8. Oktober 2005
    Hi,

    also ich weiss nicht genau was das Programm machen soll, aber ich denke mal es soll so aussehen:

    Code:
    public class Wertetafel {
    
    public Wertetafel (String[] argumentenliste)
    {
     double xAnf = Double.parseDouble(argumentenliste[0]);
     double xEnd = Double.parseDouble(argumentenliste[1]);
     double schrittweite = Double.parseDouble(argumentenliste[2]);
    
     for (double x =xAnf; x < xEnd; x = x +schrittweite)
     {
     System.out.println(x);
     }
    }
    
    public static void main (String[] args)
    {
     Wertetafel wertetafel = new Wertetafel(args);
    }
    }
    
    Mal kurz zur Erklärung:

    Code:
     for (double x =xAnf; x < xEnd; x = x+Schrittweite)
    Hier wird x auf den Anfangswert gesetzt und dann solange es kleiner als der Endwert ist um die angegebene Schrittweite erhöt. Dieses x wird dann bei jedem durchlauf ausgegeben.

    Gewöhn dir am besten direkt an, dass Klassennamen mit nem Großbuchstaben beginnen. Das macht man so, damit jeder erkennen kann des sich da um ne Klasse handelt. Im Gegensatz dazu werden Objekte von Klassen oder auch Datentypen wie int, double etc. eigentlich alle klein geschrieben.
    Ist zwar nicht schlimm wenn du nicht daran hälst, aber wird halt eigentlich immer so gemacht.

    Ich hoffe ich hab den Sinn des Proggies richtig verstanden, wenn nicht musst du nochmal bescheid sagen.

    Mfg
    Sinus2K
     
  7. #6 8. Oktober 2005
    Zuletzt von einem Moderator bearbeitet: 15. April 2017
    danke nochmal .. das programm soll eine wertetafel rausgeben, was die festegelegten zahlen eben im quadrat (²) ergeben .. die parameter muessen eben bei anwendungsparameter gesetzt werden, dass verstehe ich sogar noch ;)


    also die in dem schul-forum hams so gezeigt >>

    aitdie3te9dl.jpg
    {img-src: http://img266;imageshack;us/img266/6718/aitdie3te9dl;jpg}

    nur da seiht man ja bei mir wills nich gehen ;( (zeile 23 irgwendwas falsch)
     
  8. #7 8. Oktober 2005
    Hi,

    dann müsste es wohl so aussehen:

    Code:
    public class Wertetafel {
    
    public Wertetafel (String[] argumentenliste) {
     double xAnf = Double.parseDouble(argumentenliste[0]);
     double xEnd = Double.parseDouble(argumentenliste[1]);
     double schrittweite = Double.parseDouble(argumentenliste[2]);
    
     for (double x =xAnf; x < xEnd; x = x +schrittweite) {
     System.out.println("x = " + x + "\t y = " + (x*x));
     }
    }
    
    public static void main (String[] args) {
     Wertetafel wertetafel = new Wertetafel(args);
     }
    }
    Du hast in deinem Beispiel nen Semikolon (;) hinter deiner for-Schleife was nicht geht. Außerdem stand dein System.out.println() auserhalb jeglichen Methode (also weder Konstruktor noch Main-Methode). Deshalb gabs da auch ne Fehlermeldung.

    Wenn ich das jetzt richtig verstanden hab, sollte dein Programm die Quadratzahlen von Anfang (xAnf) bis Ende (xEnd) berechnen und das mit der vorgegebenen Schrittweite. Also z.B:

    xAnf = 1;
    xEnd = 10;
    schrittweite = 5;

    Dann sollte die Ausgabe so aussehen:
    x = 1 y = 1
    x = 6 y = 36

    Hoffe das ist jetzt so richtig, ansonsten musst du nochmal fragen :D

    Mfg
    Sinus2K
     
  9. #8 9. Oktober 2005
    wow 8o
    ich mache jetzt das 2. jahr, auch TGI, und wir haben jetzt erst mit klassen angefangen. dafür kommen aber auch alle mit...und bei uns hies es schon, wir würden den stoff zu schnell machen...

    beim code hat dir sinus ja schon gut geholfen, nur muss in zeile 8 glaub ich stehen:
    sonst wüde bei zb

    xAnf = 0;
    xEnd = 10;
    schrittweite = 5;

    nur das hier ausgegeben:

    x = 0 y = 0
    x = 5 y = 25

    die 10 würde so nicht berücksichtigt werden.

    Gruß,
    Figger
     
  10. #9 9. Oktober 2005
    Morgen,

    du hast recht....muss natürlich <= heißen.

    Hoffe jetzt gehts dann auch vernüftig.

    Schönes RestWeekEnd noch.

    Mfg
    Sinus2K
     
  11. #10 9. Oktober 2005
    ich kann mich nur bedanken fuer eure gut erklaerte hilfe .. (obwohl, wenn euch was einfaellt was ich fuer euch tun kann, dann sagts :))

    Code:
    public class wertetafel {
    
    public wertetafel (String[] argumentenliste) {
     double xAnf = Double.parseDouble(argumentenliste[0]);
     double xEnd = Double.parseDouble(argumentenliste[1]);
     double schrittweite = Double.parseDouble(argumentenliste[2]);
    
     for (double x =xAnf; x <=xEnd; x = x +schrittweite) {
     System.out.println("x = " + x + "\t y = " + (x*x));
     }
    }
    
    public static void main (String[] args) {
     wertetafel wertetafel = new wertetafel(args);
     }
    }
    nimmt er fehlerfrei an :)

    einzigstes problem is dass es nich funzen will, er meint immer die anwendungsparameter wuerden nich stimmen, dabei hab ichs paar mal auch mit logischen zahlen probiert :(
     
  12. #11 9. Oktober 2005
    ich kann mich nur bedanken fuer eure gut erklaerte hilfe .. (obwohl, wenn euch was einfaellt was ich fuer euch tun kann, dann sagts :))

    Code:
    public class wertetafel {
    
    public wertetafel (String[] argumentenliste) {
     double xAnf = Double.parseDouble(argumentenliste[0]);
     double xEnd = Double.parseDouble(argumentenliste[1]);
     double schrittweite = Double.parseDouble(argumentenliste[2]);
    
     for (double x =xAnf; x <=xEnd; x = x +schrittweite) {
     System.out.println("x = " + x + "\t y = " + (x*x));
     }
    }
    
    public static void main (String[] args) {
     wertetafel wertetafel = new wertetafel(args);
     }
    }
    nimmt er fehlerfrei an :)

    einzigstes problem is dass es nich funzen will, er meint immer die anwendungsparameter wuerden nich stimmen, dabei hab ichs paar mal auch mit logischen zahlen probiert :( (zB 1 5 1)
     
  13. #12 9. Oktober 2005
    Hi,

    also bei mir geht es ohne Probleme. Hast du auch Leerzeichen zwischen den Parametern eingegeben (also 1<leer>5<leer>1) ?

    Ansonsten versuch mal 1.0<leer>5.0<leer>1.0

    Vieleicht geht das ja. Wenn du Leerzeichen drin hattest dann liegt es an deiner Entwicklungsumgebung (JBuilder) denn der Code macht genau das was er machen soll.

    Hier mal die Ausgabe die das Proggi macht:

    x = 1.0 y = 1.0
    x = 2.0 y = 4.0
    x = 3.0 y = 9.0
    x = 4.0 y = 16.0
    x = 5.0 y = 25.0


    Mfg Sinus2K
     
  14. #13 9. Oktober 2005
    DANKE !!! es geht !!
     

  15. Videos zum Thema
Die Seite wird geladen...