Seite 103 von 202 ErsteErste ... 3539399100101102103104105106107113153 ... LetzteLetzte
Ergebnis 1.531 bis 1.545 von 3026

Thema: [Programmiererstammtisch] "Zum ächzenden Compiler"

  1. #1531
    Registrierter Uses Avatar von fuchs87
    Registriert seit
    26.08.09
    Beiträge
    4.436
    Zitat Zitat von Gullix Beitrag anzeigen
    ...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
    Oft kann man es nicht vermeiden, dass die Benutzereingabe in Textform erfolgt, da ein Mensch nun ungern in Binärformaten denkt. D. h. an irgendeiner Stelle wird man immer Konvertierungen haben und das unabhängig von der Programmiersprache.

  2. #1532
    Beyond Mars Avatar von [VK]
    Registriert seit
    05.02.08
    Beiträge
    59.567
    Zitat Zitat von EpicFail Beitrag anzeigen
    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?
    System.out.print() ist der Java-Befehl. print() dürfte entweder was eigen geschriebenes sein (das du zbs von der ConsoleApplication erbst), oder du hast schon import System.out.*; weiter oben im Code und es verweist da auf eben System.out.print()

    println() ist print() mit Zeilenumbruch am Ende.

  3. #1533
    reztuneB retreirtsigeR Avatar von EpicFail
    Registriert seit
    16.11.11
    Beiträge
    3.833
    Ah vielen Dank

    Ich hab das jetzt auch mit der Array Länge gecheckt und das gibt jetzt keine Errors mehr zurück Allerdings bekomme ich, wenn ich das Ganze ausführe immer den Text den ich zurückgebe, wenn die Arraylänge nicht 4 ist, obwohl ich das eigentlich richtig gemacht habe Oder kommt der solange bis man mal eine tatsächliche Eingabe mit Werten macht? (übrigens wie genau mache ich das eigentlich )

    Und sorry für die ganzen wahrscheinlich sehr trivialen Fragen, aber unser Prof meint halt es wäre sinnvoller uns zu erzählen, wie Compiler und Interpreter in Java funktionieren anstelle uns überhaupt erstmal Java beizubringen(weil das die meisten wohl eh schon können)
    Zitat Zitat von Austra Beitrag anzeigen
    Dort herrscht Dauerkrieg zwischen den Feminazi-Ökofaschisten und und Konservativen-FDP-AfD-Nazis

  4. #1534
    Süß und knuddlig Avatar von Schlumpf
    Registriert seit
    03.11.13
    Beiträge
    7.968
    Du bekommst die Nachricht, weil du keine Werte eingibst, args hat dann ja nicht die Länge 4.
    In der Konsole schreibst du die einfach dahinter und bei Eclipse gehst du auf Run Configurations und da kannst du dann Argumente übergeben mit denen das Programm beim nächsten Start startet.
    Edit:Wenn das ne Haushaufgabe ist, ist übrings die Frage ob du das überhaupt machen sollst.
    Meine Liste:
    1. K
    2. T
    3. V

  5. #1535
    reztuneB retreirtsigeR Avatar von EpicFail
    Registriert seit
    16.11.11
    Beiträge
    3.833
    Ne aber ich will ja selbst mal sehen ob das so funktioniert wie ich mir das vorstelle
    Zitat Zitat von Austra Beitrag anzeigen
    Dort herrscht Dauerkrieg zwischen den Feminazi-Ökofaschisten und und Konservativen-FDP-AfD-Nazis

  6. #1536
    Registrierter Benutzer Avatar von alpha civ
    Registriert seit
    22.07.06
    Beiträge
    16.757
    Die Länge muss 5 sein. Das erste Element ist stets der Programmname.

  7. #1537
    reztuneB retreirtsigeR Avatar von EpicFail
    Registriert seit
    16.11.11
    Beiträge
    3.833


    Diese Woche geht es darum, einen Kühlschrank zu implementieren und ich habe jetzt folgende Klasse mit dem Konstruktor für den Kühlschrank sowie (u.a) einer Methode um das Innere Volumen zu bekommen

    Achtung Spoiler:

    PHP-Code:
      public class Freezer implements Part {

            
    String ArticleNumber;
            
    double Prize
        
    Interior interiors;
        
    double thisHoehethisBreitethisTiefethisAussenwanddickeOuterVolumeOuterSurfaceAreaInnerVolumeInnerSurfaceAreaEnergyEfficiency;
        
    double InnenHoehe;
        
    double InnenBreite
        
    double InnenTiefe ;
        
        
        
       public 
    Freezer(String[] initialwerte) {

           if (
    initialwerte.length == 4) {

             
    thisHoehe Double.parseDouble(initialwerte[0]);
             
    thisBreite Double.parseDouble(initialwerte[1]);
             
    thisTiefe Double.parseDouble(initialwerte[2]);
             
    thisAussenwanddicke Double.parseDouble(initialwerte[3]);
           }

           else {
               
    System.out.println ("Array muss Laenge 4 haben");
       }

                 
    InnenHoehe thisHoehe thisAussenwanddicke;
              
    InnenBreite thisBreite thisAussenwanddicke;
              
    InnenTiefe thisTiefe thisAussenwanddicke;
      

       public 
    double getInnerVolume() {

           
    InnerVolume InnenHoehe InnenBreite InnenTiefe;
            return 
    this.InnerVolume;
           
       } 


    In einem anderen Package befinden sich dann die Klassen für die Innenausstattung, wovon es aber drei verschieden Typen gibt, die von dieser ersten Klasse erben:
    Achtung Spoiler:

    PHP-Code:
    package freezer.interiors;


    public class 
    Interior implements freezer.Part {

        
    String ArticleNumber;
        
    double Prize;
        
        
         public 
    String getArticleNumber(){
               return 
    this.ArticleNumber;
           }
           
           public 
    double getPrize(){
               return 
    this.Prize
           } 


    Jetzt mein Problem, der Preis der Innenausstattung der verschiedenen Typen hängt natürlich von dem inneren Volumen ab, allerdings kann ich nicht einfach getInnerVolume() aufrufen, bzw eine Instanz von Freezer erstellen, da ich dann ja konkrete Werte eingeben würde, was aber ja unsinnig wäre, da es ja allgemein funktionieren soll. Also wie genau löse ich das dann? Kann ich irgendwie die Methode aufrufen ohne eine Instanz zu erstellen oder diese Instanz irgendwie 'allgemein' erstellen? (mit einer Main Methode die dann args an den Konstruktor übergibt scheint das auch nicht zu funktionieren, da args außerhalb von der Klasse nicht aufgerufen werden kann. Allerdings kann ich scheinbar auch keinen Freezer in der FreezerClass erstellen und dann in einer anderen darauf zugreifen

    PHP-Code:
    package freezer.interiors;

    public class 
    Standard extends Interior{

        public 
    Standard(String ArtNr){
            
    ArticleNumber ArtNr;
            
    Prize 0.8 * ???.getInnerVolume();
            
            
        }

    Zitat Zitat von Austra Beitrag anzeigen
    Dort herrscht Dauerkrieg zwischen den Feminazi-Ökofaschisten und und Konservativen-FDP-AfD-Nazis

  8. #1538
    Puhuhu Avatar von Slaan
    Registriert seit
    29.09.10
    Ort
    Hànbǎo
    Beiträge
    15.142
    Das args Array sollte imo idealerweise in der main() Methode aufgeteilt werden und dann mit den Werten der Freezer erstellt werden. Im Constructor kannst du dann auch die getInnerVolume (Wichtig: Die Bezeichnung "getXY" ist eigentlich reserviert für Funktionen die Instanzvariablen zurückliefern, normalerweise würde da einfach ein "return this.Innervolume" drin stehen. Bezeichne es lieber als "calcInnerVolume" z.b.) Funktion aufrufen um das Volumen zu kalkulieren.
    Fürs Interior kannst du dann das Innervolume einfach weiterverwenden und damit eine Instanz des Interiors im Konstruktor des Freezers erstellen. Der constructor würde dann so aussehen:

    Code:
    public Freezer(double hoehe, double tiefe, doube breite, double aussenwanddicke) {
             thisHoehe = hoehe;
             thisBreite = breite;
             thisTiefe = tiefe;
             thisAussenwanddicke = aussenwanddicke;
             InnenHoehe = thisHoehe - 2 * thisAussenwanddicke;
             InnenBreite = thisBreite - 2 * thisAussenwanddicke;
             InnenTiefe = thisTiefe - 2 * thisAussenwanddicke; 
             calcInnverVolume();
             interior = new Interior(ArtNr, InnerVolume);
           }
    |學而不思則罔,思而不學則殆。 ~ 孔子|
    | 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

  9. #1539
    Registrierter Benutzer Avatar von alpha civ
    Registriert seit
    22.07.06
    Beiträge
    16.757
    Was ist denn vorgegeben?

    Edit: Bzw. was sollt ihr konkret implementieren?
    Geändert von alpha civ (12. Januar 2017 um 13:16 Uhr)

  10. #1540
    Pirat Avatar von Flati
    Registriert seit
    05.12.03
    Beiträge
    10.563
    Zitat Zitat von EpicFail Beitrag anzeigen



    Jetzt mein Problem, der Preis der Innenausstattung der verschiedenen Typen hängt natürlich von dem inneren Volumen ab, allerdings kann ich nicht einfach getInnerVolume() aufrufen, bzw eine Instanz von Freezer erstellen, da ich dann ja konkrete Werte eingeben würde, was aber ja unsinnig wäre, da es ja allgemein funktionieren soll. Also wie genau löse ich das dann? Kann ich irgendwie die Methode aufrufen ohne eine Instanz zu erstellen oder diese Instanz irgendwie 'allgemein' erstellen? (mit einer Main Methode die dann args an den Konstruktor übergibt scheint das auch nicht zu funktionieren, da args außerhalb von der Klasse nicht aufgerufen werden kann. Allerdings kann ich scheinbar auch keinen Freezer in der FreezerClass erstellen und dann in einer anderen darauf zugreifen

    PHP-Code:
    package freezer.interiors;

    public class 
    Standard extends Interior{

        public 
    Standard(String ArtNr){
            
    ArticleNumber ArtNr;
            
    Prize 0.8 * ???.getInnerVolume();
            
            
        }

    Wenn du Funktionen ohne Instanz so aufrufen willst kannst "static" verwenden, static ist meist aber nicht so hübsch. Besser ist du arbeitest in diesem Fall mit Vererbung, also der spezielle Kühlschrank erbt von einem allgemeineren Kühlschrank, welche die Methode "getInnerVolume()" implementiert. der allgemeine Kühlschrank kann man auch "abstract" machen.
    Wer Rechtschreibfehler findet darf diese behalten :)

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

  11. #1541
    reztuneB retreirtsigeR Avatar von EpicFail
    Registriert seit
    16.11.11
    Beiträge
    3.833
    Also erstmal Danke SLaan für die Antwort

    Allerdings hab ich die Aufgabe wohl ein wenig falsch verstanden Denn wie es scheint, soll man alle möglichen Innenausstattungen in einem Array zurückgeben, diese Methode erhält dann einen Freezer.

    Das sieht dann wie folgt aus:
    Achtung Spoiler:

    PHP-Code:
    package freezer.interiors;


    public class 
    Interior implements freezer.Part {

        
    String ArticleNumber;
        
    double Prize;
        
        
      public 
    Interior(){
          
      }
        
         public 
    String getArticleNumber(){
               return 
    this.ArticleNumber;
           }
           
           public 
    double getPrize(){
               return 
    this.Prize
           }
           
           
           
           
           public static 
    Interior[] getAvailableInteriors(freezer.Freezer freezer){
               
               
    ArcticSpecial ArcticSpecial = new ArcticSpecial(freezer.getInnerVolume(), freezer.getInnerSurfaceArea()); 
               
    StandardInt Standard = new StandardInt(freezer.getInnerVolume(), freezer.getInnerSurfaceArea()); 
             
    Interior[] arr = {ArcticSpecialStandard};
             
             return 
    arr;
                     
           }


    Allerdings gibt das jetzt einen Error aus, zum einen einen TypeMismatch bei der Zeile, in der ich ArcticiSpecial und Standard in ein Array schreibe (war das aber nicht aufwärtskompatibel? Also jeder ArcticSpecial/StandardInt ist ja auch automatisch ein Interior?) und zum Anderen sagt mir Eclipse dass die Konstruktoren für ArcticSpecial und StandardInt nicht existieren

    PHP-Code:
    package freezer.interiors;

    public class 
    ArcticSpecial extends Interior{
        
        public 
    ArcticSpecial(double innVdouble innSurA){
         
            
    Prize innSurA 0.2 innV 5.0;
            
    this.ArticleNumber "A";
            
        }


    PHP-Code:
    package freezer.interiors;

    public class 
    StandardInt extends Interior{

        public 
    StandardInt (double innVdouble innSurA){
            
            
            
    Prize 0.8 innV;
            
    this.ArticleNumber "S";
            
        }

    Was ja eigentlich korrekt definiert ist Insbesondere sollte man in der Aufgabe davor dasselbe nur mit der Tür machen, allerdings gab es da keinen Error - der einzige Unterschied war, dass die Array Methode keinen Freezer übergeben bekam, da man diese Informationen nicht gebraucht hat.


    @Flati: Das könnte ich natürlich machen, darf ich aber nicht weil es halt so in der Aufgabe steht


    Edit: OH MEIN GOTT Es lag nur daran, das wenn man in Eclipse auf Save geht nur die momentane Klasse gespeichert wird Ein Fall für den SPF
    Zitat Zitat von Austra Beitrag anzeigen
    Dort herrscht Dauerkrieg zwischen den Feminazi-Ökofaschisten und und Konservativen-FDP-AfD-Nazis

  12. #1542
    Puhuhu Avatar von Slaan
    Registriert seit
    29.09.10
    Ort
    Hànbǎo
    Beiträge
    15.142
    Hehe, ich glaub strg+shift+s speichert alles in Eclipse.
    |學而不思則罔,思而不學則殆。 ~ 孔子|
    | 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

  13. #1543
    reztuneB retreirtsigeR Avatar von EpicFail
    Registriert seit
    16.11.11
    Beiträge
    3.833
    So ich bin jetzt so gut wie fertig, es gibt nur noch ein, zwei Sachen die ich noch fixen muss und noch diese letzte Aufgabe, die ich aber nicht verstehe

    Ich habe jetzt eine LinkedList<String> erstellt, die alle Artikelnummern als String beinhaltet, jetzt soll ich das ganze aufsteigend sortieren, allerdings verstehe ich absolut nicht, was ich tun soll so rein von der Aufgabenstellung her
    Insbesondere der untere Abschnitt verwirrt mich, da die Artikelnummern ja schon als String gegeben sind, warum also sollte ich die nochmal konvertieren? (kann natürlich auch sein, dass das bis dato noch gar nicht verlang war). Und dann wie genau funktioniert das dann mit diesem Comparator? Also es vergleicht zwei Objekte, aber warum gibt es eine Int zurück? Was für einen Sinn hätte das bei Strings?

    Bild
    Angehängte Grafiken Angehängte Grafiken
    • Dateityp: png fop.PNG (21,2 KB, 67x aufgerufen)
    Zitat Zitat von Austra Beitrag anzeigen
    Dort herrscht Dauerkrieg zwischen den Feminazi-Ökofaschisten und und Konservativen-FDP-AfD-Nazis

  14. #1544
    Puhuhu Avatar von Slaan
    Registriert seit
    29.09.10
    Ort
    Hànbǎo
    Beiträge
    15.142
    Wenn du bei Methoden unsicher sind wie sie funktionieren kannst du immer nachschauen was sie machen . Hier z.b. die Methode compareTo von Strings und was sie tut:

    Code:
    https://docs.oracle.com/javase/7/docs/api/java/lang/String.html#compareTo(java.lang.String)
    (ka warum der Link beim normalen submit verschwindet)

    Die Aufgabe find ich aber etwas seltsam, bzw Umsetzung... aber euer Prof wird sich schon was dabei gedacht haben. Da ich noch nie die Comperators verwendet habe kann ich dir hier nicht wirklich helfen
    |學而不思則罔,思而不學則殆。 ~ 孔子|
    | 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

  15. #1545
    Registrierter Benutzer Avatar von Strat
    Registriert seit
    08.01.15
    Ort
    HGW
    Beiträge
    3.889
    @compareTo

    0 wenn beide Strings gleich und eine Zahl ungleich 0, wenn größer.

    Edit: zu langsamEmoticon: einsam
    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

Seite 103 von 202 ErsteErste ... 3539399100101102103104105106107113153 ... LetzteLetzte

Berechtigungen

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