Neues unter Forum für Android App Programmierer.

AW: Neues unter Forum für Android App Programmierer.

Gewöhn dir direkt diesen dreckigen Programmierstil ala C ab, machs so: ...

Ihgitt :(
Das ist kein dreckiger Programmierstil, es ist einfach nur eine Frage, was man bevorzugt. Ich finde zb. den Java Stil (vorallem "} else {" in einer Zeile) einfach nur schrecklich unübersichtlich.
Wo ich dir allerdings Recht geben muss: In Java wird so meist programmiert und im Job später muss man sich wohl an den Stil gewöhnen.

Trotzdem: { hat ein newline verdient :D
 
AW: Neues unter Forum für Android App Programmierer.

orrr ne ^^ dreckige LoC-Hascherei :P
is immer das erste, was ich bei dem autogenrated gelumbe mach - die sinnlos newlines stutzen :ugly:
 
AW: Neues unter Forum für Android App Programmierer.

orrr ne ^^ dreckige LoC-Hascherei :P
Pff "LoC-Hascherei", wer mit LoC angibt hat sowieso Lack gesoffen :D


Gut vorbei am Thema, aber egal :P Du hast ja schon die richtige Antwort gegeben. Im übrigen: Array [] hinter dem Variablenamen ist doch eher C style? Also mich wundert, dass Java das beides schluckt (wieder mal ein beweis für fehlende spezifikationen *lalala*). In C/C++ geht ja nur die Variante mit Klammern hinter dem Namen, nicht hinter dem "Typ".
 
AW: Neues unter Forum für Android App Programmierer.

In java werden die Klammern nicht in eine newline geschrieben. Außerdem frisst java zwar String[] args und String args[], aber üblicherweise nutzt man das erste.

Trotzdem sollten wir nun keine Programmierstil diskussion anfangen, jeder hat eigene vorlieben.
Trotzdem eine kleine Frage, wo bringt { newline übersicht? Jemals mit files jenseits der 6000 - 8000 Zeilen gearbeitet?
 
AW: Neues unter Forum für Android App Programmierer.

Trotzdem sollten wir nun keine Programmierstil diskussion anfangen, jeder hat eigene vorlieben.
Trotzdem eine kleine Frage, wo bringt { newline übersicht? Jemals mit files jenseits der 6000 - 8000 Zeilen gearbeitet?

Ja schon öfters, und wie du sagst, nur Vorlieben. Ich hab mit newline angefangen und seitdem gucke ich halt immer mit einem bestimmten Blick auf Quellcode. Wenn ich ein } sehe, dann wandern meine Augen von dort an nach oben und suchen ein { was gleich eingerückt ist. Bam, hab ich gerallt wo der Block anfängt und aufhört. Andere gucken halt nach etwas anderes auf der selben höhe wie if oder while. Kann auch funktionieren. Vorliebe ;)
 
AW: Neues unter Forum für Android App Programmierer.

Hey es hat funktioniert danke, nur bin ich jetzt ein bischen verwirt .

Der Bytecode wurde erstellt, aber nicht so wie im buch beschrieben. Im buch steht drin das dann die Datei HalloWelt.class auftauchen sollte, bei mir ist aber Print.class aufgetaucht. Das ergebnis ist auch anders. Ich gucke mir nochmal den code an.
 
AW: Neues unter Forum für Android App Programmierer.

Ja, die file heißt so wie die klasse. Wenn du meinen Code kopiert hast, heisst die klasse "Print", weil ich sie Print genannt habe.
 
AW: Neues unter Forum für Android App Programmierer.

meine fresse der Typ der das Buch geschrieben hat, hat echt nerven. Im zweiten code den ich in mein leben Scheibe baut er fehler ein :what: Ich habe ihn zwar mit aufregen und fluchen gefunden, aber naja...

Was hat das "+ args[0]" da zu suchen??? Was hat es normalerweise für eine bedeutung??
 
AW: Neues unter Forum für Android App Programmierer.

ahh jetzt habe ich weiter gelesen und kenne die bedeutung.... sehr verwirend..:what:
 
AW: Neues unter Forum für Android App Programmierer.

Mit args[0] gibst du das erste Argument, welches in der Command Line mit eingegeben worden ist aus.
args ist ein String Array und 0 ist das erste item dort drinnen.

Wenn er es nutzt, sollte er es aber beschrieben haben. :ugly:
 
AW: Neues unter Forum für Android App Programmierer.

falls du diese "comand line parameter" kennst (also bspw "C:\Spiel\Spiel(.exe) -width 800 -height 600 -cheats_on" :ugly: ) dann werden diese geschichten in das string-array args übertragen. weis grad nich wie java das behandelt, ber bei c wars glaub ich so, dass args[0] dann dieses Spiel.exe wäre und erst args[1] wäre der erste parameter "-width".

und falls ich jetz käse geredet hab... ich wars nich :fresse:
 
AW: Neues unter Forum für Android App Programmierer.

Ja, ist korrekt.
Beweis:

In C++:
Code:
#include <iostream>

using namespace std;
int main(int argc, char *argv[]) {
    cout << "argc = " << argc << endl;
    for (int i = 0; i < argc; i++) {
        cout << "argv[" << i << "] = " << argv[i] << endl;
    }
}


und in Java.

Code:
class Untitled {
    public static void main(String[] args) {
        System.out.println("args.length = " + args.length);
        for (int i = 0; i < args.length; i++) {
            System.out.println("args[" + i + "] = " + args[i]);
        }
    }
}

Nenne ich beide mal Untitled.
Call ich den C++ code ./untitled Hallo Welt bekomme ich als Output:

argc = 3
argv[0] = ./Untitled
argv[1] = Hallo
argv[2] = Welt

Bei Java bekomme ich als Output:

args.length = 2
args[0] = Hallo
args[1] = Welt
 
AW: Neues unter Forum für Android App Programmierer.

Ich habe es immer noch nicht verstanden, ich habe den Code eins zu eins aus dem Buch übertragen und bekomme trodzdem ne fehler meldung.
Code aus dem Buch:
Code:
public class Kreisberechnung2 {
    public static void main(String[] args) {
        double radius;
        double umfang, inhalt;
        radius = Double.parseDouble(args[0]);
        umfang = 2.0 * 3.1415926 * radius;
        inhalt = 3.1415926 * radius * radius;
        System.out.print("Umfang: ");
        System.out.println(umfang);
        System.out.print("Flaeche: ");
        System.out.println(inhalt);
    }
}
Fehler Meldung:

Code:
 Exception in thread "main" java.lang.ArrayIndexOutofBoundsException: 0
at Kreisberechnung2.main(Kreisberechnung2.java:5)
 
AW: Neues unter Forum für Android App Programmierer.

Ja, ist doch klar. Lies dir mal die Fehlermeldung durch, da wirst du auf Zeile 5 in Kreisberechnung2.java hingewiesen. Dort wird das erste Kommandozeilenargument abgefragt, da du die Datei wahrscheinlich ohne gestartet hast, wird ne exception geworfen.

Musst dein Programm z.B so starten: ./Kreisberechnung2 5
Dann wirst du:

Umfang: 31.415926
Flaeche: 78.539815

ausgegeben bekommen.

Du solltest aufmerksamer Lesen. :fresse:


Edit: Alter Schwede ...
In Java benötigt der ganze Code zum Ausführen 182ms. Der selbe benötigt in C++ 5ms. :fresse:
 
Zuletzt bearbeitet:
AW: Neues unter Forum für Android App Programmierer.

wie wir in den posts davor exemplarisch geklärt haben, braucht java argumente nachm anwendungsnamen. den radius übergibst du dem progrämmchen ja über einen parameter (ein argument -> args[] = array dieser argumente). wenn du jetzt mit "/java Kreisberechnung2" als bsp das programm aufrufst, dann hast du laut c ein argument -> "Kreisberechnung2". in java zählt das aber NICHT as argument (entspricht also irgendwo eher dem verständnis *find*). ergo hast du kein args[0] und du versuchst darauf zuzugreifen.

lösungen: entweder zum bsp mit "/java Kreisberechnung2 3" aufrufen (was dem sinn des simplen bsp's entspräche) -> dann hättest du das prog mit nem radius von 3 gefüttert. ODER du fängst den fehler ab:

Code:
public class Kreisberechnung2 {
    public static void main(String[] args) {
         double radius;
         double umfang, inhalt;
         [B]if(args.lenght > 0) {[/B]
             radius = Double.parseDouble(args[0]);
             umfang = 2.0 * 3.1415926 * radius;
             inhalt = 3.1415926 * radius * radius;
             System.out.print("Umfang: ");
             System.out.println(umfang);
             System.out.print("Flaeche: ");
             System.out.println(inhalt);
         } else {
             System.out.println("Kein Radius als Argument übergeben.");
         }
    }
}
Code:
public class Kreisberechnung2 {
    public static void main(String[] args) {
         [B]double radius, umfang, inhalt;[/B]
         if(args.lenght > 0) {
             radius = Double.parseDouble(args[0]);
             umfang = 2.0 * 3.1415926 * radius;
             inhalt = 3.1415926 * radius * radius;
[B]             System.out.println("Umfang: " + umfang);
             System.out.println("Flaeche: " + inhalt);
[/B]         } else {
             System.out.println("Kein Radius als Argument übergeben.");
         }
    }
}

was man dann noch testen könnte/müsste/sollte is, ob der radius auch ein numerischer wert is. weil abc als radius... ^^ aber denk mal, das geht zu weit übers bsp hinaus. wegen dem fett markierten: man muss das print und println ned so trennen, kann man schön zusammen packen. und die double werte kann man auch alle in eine reihe packen (also er mixt es ja irgendwie ^^). is im grunde aber wurst - nur kompakter.
 
AW: Neues unter Forum für Android App Programmierer.

Guck, er schlägt dir sogar ne Lösung vor.

DarkMo, du verwirrst mit dem zweiten Teil nur mehr als das du hilfst. :ugly: Ich habe sowas auch immer gemacht, bis ich bei einer Uni Übung, welche von anderen zwar Verbuggt und ohne Kontrollstruktur abgegeben wurde (wie eben sein Programm), jedoch im Vergleich zu meiner nur aus knapp 20 - 30 Zeilen bestanden, gemerkt habe, das es vorerst nicht nötig ist. Mein Programm bestand aus so knapp 300 - 400 Zeilen, hatte diverse RegExes zur Kontrolle drin etc. :schief:
Mir wurde dann gesagt das es overkill ist, jedoch korrekt ... danach wurde mir Vorgeschlagen ich solle doch das bock schwere Java Zertifikat machen (was ich nicht so Schwer fand, aber naja, was man hat, hat man :ugly:).

Moral der Geschicht: Beim Lernen ist Kontrollstruktur nicht wirklich Wichtig und kann vorerst vernachlässigt werden.

BTW: Du machst das ganz Falsch, du musst so kontrollieren:

Code:
try {
    radius = Double.parseDouble(args[0]);
} catch (ArrayIndexOutofBoundsException e) {
    System.out.println("Kein Radius als Argument übergeben.");
}

:fresse:
Wurde mir damals von einem Wissentschaftlichen Mitarbeiter mal gesagt, dem habe ich erstmal nen Vogel gezeigt. :ugly:
 
AW: Neues unter Forum für Android App Programmierer.

Ich habe verstanden das in Zeile 5 ein fehler vorliegt. Nur nicht welcher. Leider bin ich nicht schlauer.

Gut, Zeile 5: "radius = Double.parseDouble(args[0]);" Das ist Zeile 5!?

Wo liegt jetzt in dieser Zeile der fehler?

aller anfang ist schwer... schrieb mal ein schlauer man...
 
AW: Neues unter Forum für Android App Programmierer.

Da stehen zwei Beiträge, die den Fehler groß erklären. :what:

Nochmal, der Fehler ist eine ArrayIndexOutofBoundsException, bedeutet auf Deutsch, du greifst auf das String Array "args" zu, und zwar auf das erste item. Allerdings existiert dieses nicht, deswegen wird die exception geworfen.

Um das zu Verhindern, musst du dein Programm mit einem Argument starten, z.B so ./Kreisberechnung2 5
 
Zurück