Seite 102 von 202 ErsteErste ... 252929899100101102103104105106112152 ... LetzteLetzte
Ergebnis 1.516 bis 1.530 von 3026

Thema: [Programmiererstammtisch] "Zum ächzenden Compiler"

  1. #1516
    Registrierter Benutzer Avatar von alpha civ
    Registriert seit
    22.07.06
    Beiträge
    16.757
    Was willst du wo wann zuweisen? Mir ist immer noch nicht so genau klar, was du machen willst. Zeig am besten deinen Code, dann kann man dir besser helfen.

  2. #1517
    Registrierter Benutzer
    Registriert seit
    21.03.12
    Beiträge
    22.446
    Was heißt "nach Aufruf"?

    So sollte das etwa aussehen. Die main kann auch anderswo stehen.
    PHP-Code:
    public class MyClass{

      
    String ab;

      public static 
    void main(String[] args){
        
    String[] testArray = new String[4];
        
    testArray[0] = "a";
        
    testArray[1] = "b";
        
    MyClass mc = new MyClass();
      }

      public 
    MyClass(String[] input){
        if (
    input.length != 4
          
    System.out.println("Wrong input size");
        else{
          
    input[0];
          
    input[1];
        }
      }


  3. #1518
    reztuneB retreirtsigeR Avatar von EpicFail
    Registriert seit
    16.11.11
    Beiträge
    3.827
    PHP-Code:
       import acm.program.ConsoleProgram;

      public class 
    JacobiSimulation extends ConsoleProgram {

     
      
    double [][] matrix;
      
    int BreiteHoeheMaxZahlWartezeit;
      public 
    JacobiSimulation(String[] initialwerte) {
            
               
    Breite Integer.parseInt(initialwerte[0]);
               
    Hoehe Integer.parseInt(initialwerte[1]);
               
    MaxZahl Integer.parseInt(initialwerte[2]);
               
    Wartezeit Integer.parseInt(initialwerte[3]);
               
    matrix = new double[Breite][Hoehe];
               
                   for(
    int i 0Breitei++){
                       for(
    int j 0Hoehej++) {
                       
    matrix[i][j] = 0;
                   }
                }
      }

      public static 
    void main(String args[]) {
        new 
    JacobiSimulation(args).start();
      }

    Das ist noch nicht der ganze Code, da ich mit der Aufgabe noch nicht fertig bin, aber ich soll scheinbar erreichen, dass ich eine Matrix erstellen soll und die Werte wie zb Höhe und Breite in dem Konstruktor in einem Array übergeben werden sollen.
    Die Transformierung von String zu int muss ich machen, weil die Eingabe als String kommen soll. Ich verstehe wie gesagt auch noch nicht allzu viel, bzw. habe ich noch am meisten Probleme zu verstehen, wann etwas wie irgendwas übergeben bekommt, wie man das erreicht usw.
    Zitat Zitat von Austra Beitrag anzeigen
    Dort herrscht Dauerkrieg zwischen den Feminazi-Ökofaschisten und und Konservativen-FDP-AfD-Nazis

  4. #1519
    Registrierter Benutzer Avatar von Strat
    Registriert seit
    08.01.15
    Ort
    HGW
    Beiträge
    3.889
    Zitat Zitat von EpicFail Beitrag anzeigen
    Gut ok, aber wie genau löse ich dann das Problem dass ich habe:

    Wenn ich nach Aufruf der Methode die einzelnen Einträge zuweisen will also zb

    a = testarray[0];
    b= testarray [1];

    bekomme ich eine IndexoutofboundException, die ja kommt, wenn man auf ungültige Stellen im Array zugreifen will. Oder ist das der Preis den man zahlen muss dafür, dass die Länge beliebig sein darf ?
    Prüf doch einfach length die Länge des Array, dann sollte es keine OutOfBounds geben. Stattdessen wird halt falls er zu klein ist, ein Fehler ausgegeben.
    Elemente des Arrays sind meines Wissens nach in Java nicht null( bin eher in C++ unterwegs), sodass dann auch kein Problem geben sollte, dass das Element auf welches ich zugreife null ist.
    Zitat Zitat von Schlumpf Beitrag anzeigen
    Strat ist doch so ein verkorkster Linker
    Zitat Zitat von Isaac Newton; in einem Brief an Robert Hooke
    Wenn ich weiter geblickt habe, so deshalb, weil ich auf den Schultern von Riesen stehe.
    Storys

    Civ 4: Weg in den Olymp
    Civ 4 PBEM 474 Das Steigen und Fallen der Kurse

  5. #1520
    Registrierter Benutzer
    Registriert seit
    21.03.12
    Beiträge
    22.446
    Das sieht gut aus. Du musst nur noch im Konstruktor prüfen, ob genug Eingaben gemacht wurden. Das String[] args, das die main-Methode erwartet, kannst du beim Programmaufruf über die Konsole eingeben.

    Die Konversion von String zu int ist nötig, weil es in Java halt üblich ist, die Aufrufparameter als String zu übergeben. Dadurch sind an der Stelle keine Typprüfungen nötig, sondern halt erst in deinem Code. Dann kannste mit System.out.println zurückmelden, wenn zu wenig/nicht als Zahl interpretierbare Eingaben gemacht wurden und den Benutzer evtl. einzeln dazu auffordern. Wie da die API zu ist, weiß ich aber grad net auswendig.

    Die Elemente vom String[] können allerdings schon null sein iirc, da null der Standardwert für einen nicht-initialisierten String ist.

  6. #1521
    reztuneB retreirtsigeR Avatar von EpicFail
    Registriert seit
    16.11.11
    Beiträge
    3.827
    Vielen vielen Dank Ich setze mich morgen dann nochmal dran
    Zitat Zitat von Austra Beitrag anzeigen
    Dort herrscht Dauerkrieg zwischen den Feminazi-Ökofaschisten und und Konservativen-FDP-AfD-Nazis

  7. #1522
    Pirat Avatar von Flati
    Registriert seit
    05.12.03
    Beiträge
    10.563
    Zitat Zitat von EpicFail Beitrag anzeigen
    PHP-Code:
       import acm.program.ConsoleProgram;

      public class 
    JacobiSimulation extends ConsoleProgram {

     
      
    double [][] matrix;
      
    int BreiteHoeheMaxZahlWartezeit;
      public 
    JacobiSimulation(String[] initialwerte) {
            
               
    Breite Integer.parseInt(initialwerte[0]);
               
    Hoehe Integer.parseInt(initialwerte[1]);
               
    MaxZahl Integer.parseInt(initialwerte[2]);
               
    Wartezeit Integer.parseInt(initialwerte[3]);
               
    matrix = new double[Breite][Hoehe];
               
                   for(
    int i 0Breitei++){
                       for(
    int j 0Hoehej++) {
                       
    matrix[i][j] = 0;
                   }
                }
      }

      public static 
    void main(String args[]) {
        new 
    JacobiSimulation(args).start();
      }

    Das ist noch nicht der ganze Code, da ich mit der Aufgabe noch nicht fertig bin, aber ich soll scheinbar erreichen, dass ich eine Matrix erstellen soll und die Werte wie zb Höhe und Breite in dem Konstruktor in einem Array übergeben werden sollen.
    Die Transformierung von String zu int muss ich machen, weil die Eingabe als String kommen soll. Ich verstehe wie gesagt auch noch nicht allzu viel, bzw. habe ich noch am meisten Probleme zu verstehen, wann etwas wie irgendwas übergeben bekommt, wie man das erreicht usw.
    nur mal so als kleine Tipp am Rande. Schreib Variablennamen am Anfang immer klein, da Klassennamen prinzipiell groß geschrieben werden. Bei größeren Programmen kommt man sonst ziemlich schnell durcheinander.
    Ansonsten brauchst du noch eine Fehlerbehandlung(catch auf NumberFormatException) bei parseInt(String ...) da kann ja alles mögliche reinkommen und dein Programm raucht bei Fehleingabe unkontrolliert ab.
    Kommt da noch was oder warum weißt du deiner double Matrix überall den Wert 0 über zwei Schleifen zu? kleine double sind doch alle von Haus aus 0.
    Wer Rechtschreibfehler findet darf diese behalten :)

    Original geschrieben von robertinho:
    "Asterix und Flati stehen für solide Kompetenz und Verlässlichkeit."

  8. #1523
    Frühstücksbonze Avatar von Gullix
    Registriert seit
    21.07.10
    Beiträge
    13.402
    ...also, nee, die Nullen reinschreiben sollte drinbleiben. Man kann sich nicht früh genug angewöhnen, grundsätzlich IMMER zu initialisieren.
    Mit Naturgesetzen kann man nicht verhandeln. --Harald Lesch

    Ein Atomkrieg würde die Menschheit auslöschen. Hätte aber auch Nachteile.

  9. #1524
    Pirat Avatar von Flati
    Registriert seit
    05.12.03
    Beiträge
    10.563
    Zitat Zitat von Gullix Beitrag anzeigen
    ...also, nee, die Nullen reinschreiben sollte drinbleiben. Man kann sich nicht früh genug angewöhnen, grundsätzlich IMMER zu initialisieren.
    Wenn Breite und Hoehe aber ziemlich groß werden ist das ein ziemlich sinnloser Rechenaufwand. native Datentypen (also die kleinen double) sind immer vorinitialisiert.
    Wer Rechtschreibfehler findet darf diese behalten :)

    Original geschrieben von robertinho:
    "Asterix und Flati stehen für solide Kompetenz und Verlässlichkeit."

  10. #1525
    Frühstücksbonze Avatar von Gullix
    Registriert seit
    21.07.10
    Beiträge
    13.402
    ...also, never sacrifice safety to performance
    Mit Naturgesetzen kann man nicht verhandeln. --Harald Lesch

    Ein Atomkrieg würde die Menschheit auslöschen. Hätte aber auch Nachteile.

  11. #1526
    Beyond Mars Avatar von [VK]
    Registriert seit
    05.02.08
    Beiträge
    59.566
    Mich stört ja eher dass er die Parameter als ein String Array übergibt. Das müsste eher das double Array sein. Dann muss er in der Funktion auch nicht parsen und überprüfen. Die Klasse ist damit unabhängig von der String Repräsentation und kann besser wiederverwendet werden.

    Außerdem sind 2D-Arrays meh.

    double get(int x, int y, int arraywidth){
    return array[y*arraywidth+x]
    }

    Ist imo einfacher zu handhaben und dürfte auch caching besser ausnutzen.

  12. #1527
    Registrierter Benutzer Avatar von alpha civ
    Registriert seit
    22.07.06
    Beiträge
    16.757
    Zitat Zitat von [VK] Beitrag anzeigen
    Außerdem sind 2D-Arrays meh.

    double get(int x, int y, int arraywidth){
    return array[y*arraywidth+x]
    }

    Ist imo einfacher zu handhaben und dürfte auch caching besser ausnutzen.
    Für einen Anfänger aber komplizierter und fehleranfälliger. Vorallem was denn Zugriff betrifft. Sowas würde man in einer eigenen Matrixklasse kapseln, aber das würde zuweit führen.

  13. #1528
    Puhuhu Avatar von Slaan
    Registriert seit
    29.09.10
    Ort
    Hànbǎo
    Beiträge
    15.142
    Zitat Zitat von [VK] Beitrag anzeigen
    Mich stört ja eher dass er die Parameter als ein String Array übergibt. Das müsste eher das double Array sein. Dann muss er in der Funktion auch nicht parsen und überprüfen. Die Klasse ist damit unabhängig von der String Repräsentation und kann besser wiederverwendet werden.
    . Man sollte die durchs Programm übergebenen Argumente in der Main Klasse auffangen und dann von dort aus weiterverwenden. Das hilft, wenn man z.b. Argumente für verschiedene Aufgabenbereiche übergibt oder ein Argument für mehrere Klassen braucht oder oder.
    |學而不思則罔,思而不學則殆。 ~ 孔子|
    | Lernen ohne zu denken ist sinnlos, denken ohne zu lernen gefährlich. ~ Kong Zi |

    | During times of universal deceit, telling the truth becomes a revolutionary act ~ George Orwell |

    SdM Dez16 - XCOM2 Make Humanity Great again

  14. #1529
    Frühstücksbonze Avatar von Gullix
    Registriert seit
    21.07.10
    Beiträge
    13.402
    ...also, die Strings sind glaub eine Java-Krankheit. Lasst euch nur nicht erzählen, dass man das in der Sprache halt so macht - es ist einfach eine schlechte Idee, was Sicherheit angeht. Allein wie viele Checks in den Codebeispielen der letzten paar Posts fehlen. Und falls die durch parseInt erledigt werden, ist das Performance-Argument beim Nullen auch tot
    Mit Naturgesetzen kann man nicht verhandeln. --Harald Lesch

    Ein Atomkrieg würde die Menschheit auslöschen. Hätte aber auch Nachteile.

  15. #1530
    reztuneB retreirtsigeR Avatar von EpicFail
    Registriert seit
    16.11.11
    Beiträge
    3.827
    Nochmal ne Frage, interessanterweise findet man dazu nichts im Internet, also hängen die beiden Sachen wahrscheinlich nicht wirklich zusammen:

    Was ist der Unterschied zwischen System.out.print() und print() ? Bei beiden erzeuge ich ja scheinbar eine Ausgabe in der Konsole oder?
    Zitat Zitat von Austra Beitrag anzeigen
    Dort herrscht Dauerkrieg zwischen den Feminazi-Ökofaschisten und und Konservativen-FDP-AfD-Nazis

Seite 102 von 202 ErsteErste ... 252929899100101102103104105106112152 ... LetzteLetzte

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •