Zum Inhalt springen

antenne

Mitglieder
  • Gesamte Inhalte

    34
  • Benutzer seit

  • Letzter Besuch

Beiträge von antenne

  1. Darauf wollte ich gar nicht hinaus. 1) Dein Ansatz ist von hinten durch die Brust ins Auge 2) du multiplizierst gar nicht.

    Schau dir mal an, wofür ein Array da ist und wie man dein Problem damit durch nur 1 Schleife lösen könnte.

    hab mich vllt etwas blöd ausgedrückt. Es war ja das Ziel das Ergebnis ohne Multiplikation zu erhalten. ich hätte auch einfach ergebnis = zahl1*zahl2*zahl3; schreiben können aber wie gesagt das war nicht die Aufgabe.

  2. Ja, Schleife ist doch schon mal ein guter Ansatz. Und nun musst du dir überlegen, was du denn damit durchlaufen möchtest.

    (Edit) Hint: Du brauchst hier was, wo deine 3 Zahlen drin sind. Und das durchläufst du dann solange, wie noch Zahlen übrig sind. Was in der Schleife passieren soll, ist der einfachere Teil.

    oh man ich bin ein Held ... ich hatte bei System.out.println (ergebnis) drin stehen .... da muss natürlich ergebnis2 rein!. Aber ich werde es mal mit einer Methode versuchen. hier der Quellcode falls es wen interessiert mit 2 Methoden:

    import java.util.Scanner;

    public class AdditionStattMultiplikation {

        public static void main(String[] args) {
            
            Scanner s= new Scanner (System.in);
            
            int zahl1=s.nextInt();
            int    zahl2=s.nextInt();
            int zahl3=s.nextInt();
            int ergebnis = ergeb(zahl1,zahl2);
            int ergebnis2 = ergeb2 (ergebnis, zahl3);
            System.out.println(ergebnis2);}
            
            static int ergeb (int zahl1, int zahl2){
                
                int lösung = 0;
                for (int i = 0; i < zahl2; i++)
                    
                    lösung += zahl1;
            
                return lösung;}
                    
            static int   ergeb2 (int ergebnis, int zahl3){
                int lösung2= 0;
                
                for (int i = 0; i<zahl3;i++) lösung2 += ergebnis;
                
            return lösung2;
            }
    }
       

     

  3. Hallo habe ein kleines Problem. Ich möchte 3 Zahlen multiplizieren aber eben nicht mit a*b*c sondern durch Schleifen. Meine Idee sah wie folgt aus:

    import java.util.Scanner;

    public class AdditionStattMultiplikation {

        public static void main(String[] args) {
            
            Scanner s= new Scanner (System.in);
            
            int zahl1=s.nextInt();
            int    zahl2=s.nextInt();
            int zahl3=s.nextInt();
            int ergebnis = ergeb(zahl1,zahl2);
            int ergebnis2 = ergeb2 (ergebnis, zahl3);
            System.out.println(ergebnis);}
            
            static int ergeb (int zahl1, int zahl2){
                
                int lösung = 0;
                for (int i = 0; i < zahl2; i++){
                    
                    lösung += zahl1;
                }}
                
            static int   ergeb2 (int ergebnis, int zahl3){
                int lösung2= 0;
                
                for (int i = 0; i<zahl3;i++)
                    
                    lösung2 += ergebnis;
                
                return lösung2;
                }}
        
        


    Problem hierbei ist, das die erste Methode einen return Wert haben will, aber dadurch wird nichts was danach kommt ausgeführt somit würde er bei 2*3*4 als Ergebnis 6 wiedergeben. Entferne ich den return Befehl und schreibe es wie hier zu sehen kommt ne Fehlermeldung.

    Kann man nicht 2 Methoden verwenden und das Ergebnis aus der ersten Methode der 2ten übergeben?

  4. achja zum Abschluss natürlich noch das fertige und wunderbar funktionierende Programm :D

                                                                                                                                                      

    import java.util.Scanner;

    public class RabattBerechnen {

        private static Scanner s;

        public static void main(String[] args) {
            s = new Scanner(System.in);
            
            String sk;
            double p,r,m,fr, fp,vk;
            {
            
    System.out.print("Bitte geben Sie die Menge an: ");
    m = s.nextDouble();
    System.out.print("Bitte geben Sie den Preis an: ");
    p = s.nextDouble();
    System.out.print("Bitte geben Sie den Rabatt an: ");
    r = s.nextDouble();
    System.out.print("Bekommen Sie Skonto? ");
    sk = s.next();
    System.out.print("Bitte geben Sie die Versandkosten ein: ");
    vk = s.nextDouble();
    System.out.println("Der Endpreis wird berechnet...");
        
        fr =m* p*r/100;
                
        if (sk.equals("ja"))
            fp= (m*p-fr)*0.98+vk;
        else
            fp=(m*p)-fr+vk;

    System.out.println("Der Preis inklusive Versandkosten beträgt "+fp);
            }}}

  5. ich schreibe jetzt nochmal das komplette programm der Übersichtlichkeit halber:

     

    import java.util.Scanner;


    public class RabattBerechnen {

        private static Scanner s;

        public static void main(String[] args) {
            s = new Scanner(System.in);
            IOException();
            
        String sk;
            double p,r,m,fr, fp,vk,fsk;
            
            {
            
    System.out.print("Bitte geben Sie die Menge an: ");
    m = s.nextDouble();
    System.out.print("Bitte geben Sie den Preis an: ");
    p = s.nextDouble();
    System.out.print("Bitte geben Sie den Rabatt an: ");
    r = s.nextDouble();
    System.out.println("Bekommen Sie Skonto? ");
    sk=s.nextLine();{
        fr = p*r/100;
        double skj;
        skj= fr*0.98;
        
        
        if (sk.equals("ja"))
            fsk = skj;
        else
            fsk=fr;}


    System.out.print("Bitte geben Sie die Versandkosten ein: ");
    vk = s.nextInt();
    System.out.println("Der Endpreis wird berechnet...");
    fr = m*p*r/100;

    fp = m*fsk+vk;
    fp=m*p-fr+vk;

    System.out.println("Der Preis inklusive Versandkosten beträgt "+fp);


            

        }
            }

     

        private static void IOException() {
            
            
        }
    }

     

    das alles funktioniert soweit ganz gut. Neues Problem hier ist, dass das Programm fragt :"Bekommen Sie Skonto?" aber gar nicht auf die Eingabe wartet sondern direkt die nächste Zeile ausgibt :"Bitte geben Sie die Versandkosten an". Ich kann also gar nicht ja schreiben.

  6. Ich hab das grade mal durchgespielt.

    Diese Exception kommt wenn du dem Scanner einen Datentyp übergist den er nicht erwartet.

    Also bitte bei allem auch ein Double angeben außer bei den Versandkosten.

    Dann funktioniert es.

     

    Verstehe ich leider nicht ganz. Habe doch überall double. und habe mal int vk; gemacht und bei double rausgenommen. Der Fehler kommt aber trotzdem sobald ich ne kommazahl verwende. Und warum eigentlich kein double bei Versandkosten? Da sind doch auch meistens Zahlen mit Komma dabei.

     

    edit: darauf muss man auch erstmal kommen... Ich war gewohnt bei Programmiersprachen Zahlen mit . statt , zu schreiben. Wenn ich jetzt Zahlen mit Komma schreibe funktioniert es. Nur die Skontoabfrage funktioniert weiterhin nicht

  7. Hallo Leute. Da mir hier letztes mal schon so super geholfen wurde, würde ich gern wieder um Rat bitten. Ich wollte als abosluter Java neuling, mal ein kleines Programm schreiben, wo ich den Preis eines Produktes berechnen kann. Mit Rabatt, Skonto usw.

     

    Hier erstmal der Quellcode:

    import java.util.Scanner;

    public class RabattBerechnen {

        private static Scanner s;

        public static void main(String[] args) {
            s = new Scanner(System.in);
            
        
            int ja = 0;
            double p,r,m,vk,fr, fp,fsk,sk;
            {
            
    System.out.print("Bitte geben Sie die Menge an: ");
    m = s.nextDouble();
    System.out.print("Bitte geben Sie den Preis an: ");
    p = s.nextDouble();
    System.out.print("Bitte geben Sie den Rabatt an: ");
    r = s.nextDouble();
    System.out.println("Bekommen Sie Skonto? ");
    sk=s.nextDouble();{
        fr = p*r/100;
        if (sk == ja){
            fsk = fr*sk;}
        else
            fsk =fr;
    }

    System.out.print("Bitte geben Sie die Versandkosten ein: ");
    vk = s.nextInt();
    System.out.println("Der Endpreis wird berechnet...");
    fr = p*r/100;
    fsk = fr*sk;
    fp = m*fsk+vk;

    System.out.println("Der Preis inklusive Versandkosten beträgt "+fp);


            

        }

    }
    }

    Ich kann Menge und Preis eingeben, danach kommt dieser Fehler:

     

    Bitte geben Sie die Menge an: 5
    Bitte geben Sie den Preis an: 4.26
    Exception in thread "main" java.util.InputMismatchException
        at java.util.Scanner.throwFor(Unknown Source)
        at java.util.Scanner.next(Unknown Source)
        at java.util.Scanner.nextDouble(Unknown Source)
        at RabattBerechnen.main(RabattBerechnen.java:18)

     

    ich hatte auch s.nextInt(); probiert aber funktioniert genauso wenig. Könnte mir wer einen Tip geben warum er meckert? Fehler werden keine angezeigt in eclipse.

     

    Vielen Dank schonmal!

     

    edit: Wenn ich bei Preis eine glatte Zahl also zb. 5 eingebe geht es sogar weiter bis Rabatt. auch da kommt der Fehler nur wenn ich Kommazahlen verwende, aber spätestens dann bei der Skonto abfrage bekomme ich wieder den Fehler egal was ich da eingebe.

     

  8. Wollte noch was hinzufügen. Ich war mal auf der codewars seite. aber das ist wohl alles andere als für Anfänger. Die erste Übung hatte gleich soviel Begriffe und andere Sachen die ich noch nicht mal irgendwo gelesen hatte. Konnte bei keiner Aufgabe auch nur erahnen was zu tun ist. Wird noch eine ganze Weile dauern bis ich da irgendwas als Übung benutzen kann.

  9. Hallo,

    was heißt kein richtiger Lehrer und was für Aufgaben werden da an die Wand geworfen?

    Du bist bei einem Bildungsträger oder in einer Firma und in der Berufsschule?

    Gruß
    schlumpfen

    Mit richtige Lehrer meine ich, dass er kaum Ahnung von Java hat, nie selbst was schreibt und immer nur fertige Lösungen an die Wand strahlt. Es sind Aufgaben wie, programmiere 3 Würfel, Ob ein Wort ein Palindrom ist also z.B. Lagerregal, ein Fahrstuhl der je nach Stockwerk ausgibt wie das Stockwerk heißt. Und noch ähnliche Sachen. Im ersten Jahr hatten die Schüler einen anderen Lehrer und sind jetzt alle mehr als enttäuscht von diesem, da der Alte es richtig erklären konnte. Die Umschulung ist wie eine normale Lehre. Also Betrieb und Berufsschule.

     

    Und vielen dank für den richtigen Code. Funktioniert super. Auch wenn man es dann auf 6 Zahlen oder mehr erweitert. Mir war nicht bewusst, dass man wenn dann nur arrays verwendet mit x. Schade, dass ich es einfach nicht gecheckt habe. Was wären denn gute Übungen für absolute Anfänger?

  10. Hi, 

    http://www.java-tutorial.org/java-grundlagen.html

    ich gehe mal davon aus ihr befindet euch im Lernfeld 6: Entwickeln und Bereitstellen von Anwendungssystemen. Gibt es an eurer Schule ein eingeführtes Fachbuch?
    Wurde im ersten Ausbildungsjahr auch schon Java unterrichtet? Evtl. gibt es ja einen Mitschüler der die Grundlagen dokumentierte hat.

    Was genau macht ihr im Unterricht? Das Problem das Du hier gerade angehst ist ja schon etwas gehobener Anspruch.

    Gruß
    schlumpfen

    was wir in der Schule machen steht im ersten post. In Kurzform: Der Lehrer ist kein richtiger Lehrer. Fragen beantwortet er mit einem Schulterzucken. Java war im ersten Jahr schon dran. Muss ich mal fragen ob da wer was daheim hat. Der Java Unterricht besteht daraus, Übungen an die Wand zu Beamern und 10 min zu warten in der Hoffnung einer hat es hingekriegt. Danach gibts die Lösung, natürlich schon vorgeschrieben. Ich denke mal er bekommt die Aufgaben von jemand anderen. Ich dachte 3 Zahlen sortieren wäre absoluter Urschleim, weil es sich ja einfach anhört. Es hatte ja schon soweit alles gepasst wo ich es mit if und else if gemacht habe, allerdings auch mehr kopiert als selber erarbeitet...leider.

  11. Okay. Erstmal: Das Einlesen der Zahlen brauchst du nur in main - in sortiere hat das nichts zu suchen. Ich mache mal ein paar Änderungen an deinem Code, die hoffentlich helfen, das Problem zu verdeutlichen:

     

          public static void sortiere(int[] zahlenArray) {
          boolean unsortiert=true;
          int temp;     
          
          // überflüssiges Einlesen von Zahlen entfernt
    
          while (unsortiert){
             unsortiert = false;
             for (int arrayIndex = 0; arrayIndex < zahlenArray.length-1; arrayIndex++)
                int aktuelleZahl = zahlenArray[arrayIndex];
                if (aktuelleZahl > zahlenArray[arrayIndex + 1]) {                      
                   temp       = aktuelleZahl;
                   aktuelleZahl  = zahlenArray[arrayIndex + 1];
                   zahlenArray[arrayIndex + 1]     = temp;
                   unsortiert = true;
                }          
          }
       }
    
    Wenn du die Zeile 
    int aktuelleZahl = zahlenArray[arrayIndex];
     nicht hast, dann würdest du darunter folgendes stehen haben: 
    if(zahlenArray > zahlenArray[arrayIndex + 1])
     Ich hoffe, es leuchtet ein, wieso das nicht funktionieren kann.

    leider alles dunkel hier. Ist wirklich schwierig sich das ganze Grundzeug selbst beizubringen ohne Lehrer. Ich habe bei meiner BG schon Stützunterricht für Java angemeldet aber der findet wohl erst im Dezember statt, da es extrem wenige Dozenten gibt die Java beherrschen.

  12. Hi,

    und wie sieht der Code aus der kompiliert wird?

    Ich bekomme bei diesem Code den schon angesprochenen Fehler. s. Anlage.

    Gruß
    schlumpfen

     

     

    fehler.png

    Wie meinst du das? Das was oben steht wird kompiliert. Also der 2 posts höher.

  13. Hallo,

    ich würde gerne mal den ganzen Quellcode am Stück sehen. Die Vorredner haben schon gesagt wo der Fehler liegt. Von daher kann ich mir nicht vorstellen das es an etwas anderem liegt.

    Gruß
    schlumpfen

    hier mein verhunzter quellcode

    import java.io.BufferedReader;
    import java.io.IOException;
    import java.io.InputStreamReader;

    public class BubbleSort {
       public static void sortiere(int[] x) {
          boolean unsortiert=true;
          int temp;
          InputStreamReader isr = new InputStreamReader(System.in);
          BufferedReader br = new BufferedReader(isr);
          System.out.print("Erste Zahl: ");
          String eingabe1 = br.readLine();
          System.out.print("Zweite Zahl: ");
          String eingabe2 = br.readLine();
          System.out.print("Dritte Zahl: ");
          String eingabe3 = br.readLine();
          int zahl1 = Integer.parseInt(eingabe1);
            int zahl2 = Integer.parseInt(eingabe2);
            int zahl3 = Integer.parseInt(eingabe3);
          
          
          while (unsortiert){
             unsortiert = false;
             for (int i=0; i < x.length-1; i++)
                if (x > x[i+1]) {                      
                   temp       = x;
                   x       = x[i+1];
                   x[i+1]     = temp;
                   unsortiert = true;
                }          
          }
       }
       
       public static void main(String[] args) throws IOException {
           InputStreamReader isr = new InputStreamReader(System.in);
              BufferedReader br = new BufferedReader(isr);
              System.out.print("Erste Zahl: ");
              String eingabe1 = br.readLine();
              System.out.print("Zweite Zahl: ");
              String eingabe2 = br.readLine();
              System.out.print("Dritte Zahl: ");
              String eingabe3 = br.readLine();
              int zahl1 = Integer.parseInt(eingabe1);
                int zahl2 = Integer.parseInt(eingabe2);
                int zahl3 = Integer.parseInt(eingabe3);
          
        int[] liste = {zahl1,zahl2,zahl3};
          sortiere(liste);
          for (int i=0; i<liste.length; i++)
             System.out.print(liste+" ");    
       }
    }

     

     

  14. Du musst die Zahlen in main einlesen und auch da deklarieren. Nur, weil du in sortiere irgendwelche Variablen deklarierst, kennt die nicht automatisch das ganze Programm.

    public static void main(String[] args) throws IOException {
           InputStreamReader isr = new InputStreamReader(System.in);
              BufferedReader br = new BufferedReader(isr);
              System.out.print("Erste Zahl: ");
              String eingabe1 = br.readLine();
              System.out.print("Zweite Zahl: ");
              String eingabe2 = br.readLine();
              System.out.print("Dritte Zahl: ");
              String eingabe3 = br.readLine();
              int zahl1 = Integer.parseInt(eingabe1);
                int zahl2 = Integer.parseInt(eingabe2);
                int zahl3 = Integer.parseInt(eingabe3);
          
        int[] liste = {zahl1,zahl2,zahl3};

     

    so? er startet jetzt eine Abfrage von 3 Zahlen. danach kommt foglender Fehler:

    Exception in thread "main" java.lang.Error: Unresolved compilation problems:
        The operator > is undefined for the argument type(s) int[], int
        Type mismatch: cannot convert from int[] to int
        Type mismatch: cannot convert from int to int[]

        at BubbleSort.sortiere(BubbleSort.java:25)
        at BubbleSort.main(BubbleSort.java:48)

     

    wird wohl von folgendem verursacht:

     while (unsortiert){
             unsortiert = false;
             for (int i=0; i < x.length-1; i++)
                if (x > x[i+1]) {                      
                   temp       = x;
                   x       = x[i+1];
                   x[i+1]     = temp;
                   unsortiert = true;

  15. Wie gesagt: Fast alles steht schon da.

    Die ursprüngliche Zeile lautet
     

    int[] liste = {0,9,4,6,2,8,5,1,7,3};

    Wir wollen aber keine Liste mit 0, 9, 4 usw., sondern mit unseren ints. Ersetze also hier die festen Zahlen durch deine int-Variablen.

    hab ich einmal so probiert:

    int[] liste = {zahl1,zahl2,zahl3};

    daraufhin erscheint diese Fehlermeldung:

    Exception in thread "main" java.lang.Error: Unresolved compilation problems:
        zahl1 cannot be resolved to a variable
        zahl2 cannot be resolved to a variable
        zahl3 cannot be resolved to a variable

        at BubbleSort.main(BubbleSort.java:35)


    dann habe ich die variablen nocheinmal gesetzt:

    int zahl1;

    int zahl2;

    int zahl3;

    daraufhin dann diese Meldung:

    Exception in thread "main" java.lang.Error: Unresolved compilation problems:
        The local variable zahl1 may not have been initialized
        The local variable zahl2 may not have been initialized
        The local variable zahl3 may not have been initialized

        at BubbleSort.main(BubbleSort.java:37)

     

    auch das hinzufügen des Befehls: Integer.parseInt(eingabe1) will er nicht haben

  16. Strings vom Benutzer einlesen (das ist der Teil mit dem 

    InputStreamReader)

    InputStreamReader isr = new InputStreamReader(System.in);
          BufferedReader br = new BufferedReader(isr);
          System.out.print("Erste Zahl: ");
          String eingabe1 = br.readLine();
          System.out.print("Zweite Zahl: ");
          String eingabe2 = br.readLine();
          System.out.print("Dritte Zahl: ");
          String eingabe3 = br.readLine();

     

    sieht bei mir so aus

     

    Eingelesene Strings in Zahlen umwandeln (das ist der Teil mit parseInt)

            int zahl1 = Integer.parseInt(eingabe1);
            int zahl2 = Integer.parseInt(eingabe2);
            int zahl3 = Integer.parseInt(eingabe3);

     

    hab ich das

     

    Aus den Zahlen ein Array konstruieren (so wie in der Zeile mit den vordefinierten Zahlen)

    hab ich verschiedenste sachen probiert. hat alles nix geholfen. entweder steht da, dass die variable nicht vorhanden ist, oder es geht irgendwas anderes nicht. Keine Ahnunh. Die links hab ich mir angeschaut, aber das ist noch komplizierter geschrieben als irgendwelche java tutorials.

  17. Das hier ist die Stelle in main, wo das Array mit den Zahlen für die Sortierung erzeugt wird:

    int[] liste = {0,9,4,6,2,8,5,1,7,3};

    Du musst das Array mit den Benutzereingaben füllen, also gehört der Code zum Einlesen davor.

    Und dann erstellst du das Array liste nicht aus diesen vorgegebenen Zahlen, sondern aus den Zahlen, die der Benutzer eingegeben hat.

    Sry wenn ich nerve. Bin wirklich froh, dass du mir versuchst zu helfen. Nur leider versteh ich es einfach nicht. Könntest du einen Lösungsansatz posten? Ich will natürlich so viel wie möglich selbst rausfinden aber egal was ich probiere es klappt nicht. ich hab es mit int [] liste = br.readLine{zahl1,zahl2,zahl3} probiert und ich habe br.readLine mit Integer.parseInt(eingabe1,eingabe2,eingabe3) getauscht. hat auch nix gebracht. Bin ich überhaupt nah dran oder total vorbei an der Lösung

  18. Wie bereits gesagt: Lass die Finger von der Methode sortiere, die ist gut, so wie sie ist. Ändere main. Dort fängt das Programm an.

    Und wie gesagt, keine Ahnung wie. Ich dachte dieses "public static void main" ist immer so. was soll ich da ändern?

  19. meine idee war jetzt diese

    import java.io.BufferedReader;
    import java.io.InputStreamReader;

    public class BubbleSort {
       public static void sortiere(int[] x) {
          boolean unsortiert=true;
          int temp;
          InputStreamReader isr = new InputStreamReader(System.in);
          BufferedReader br = new BufferedReader(isr);
          System.out.print("Erste Zahl: ");
          String eingabe1 = br.readLine();
          System.out.print("Zweite Zahl: ");
          String eingabe2 = br.readLine();
          System.out.print("Dritte Zahl: ");
          String eingabe3 = br.readLine();
          int zahl1 = Integer.parseInt(eingabe1);
            int zahl2 = Integer.parseInt(eingabe2);
            int zahl3 = Integer.parseInt(eingabe3);
          
          
          while (unsortiert){
             unsortiert = false;
             for (int i=0; i < x.length-1; i++)
                if (x > x[i+1]) {                      
                   temp       = x;
                   x       = x[i+1];
                   x[i+1]     = temp;
                   unsortiert = true;
                }          
          }
       }
       
       public static void main(String[] args) {
          int[] liste = {eingabe1,eingabe2,eingabe3};
          sortiere(liste);
          for (int i=0; i<liste.length; i++)
             System.out.print(liste+" ");    
       }
    }

     

    aber wie erwartet funktioniert das auch nicht

     

  20. Diesen Teil des Codes musst du durch eine Benutzereingabe ersetzen, sonst nichts.

     

    Und wie? habe ja an so etwas gedacht:

    •  int zahl1 = Integer.parseInt(eingabe1);
    •  int zahl2 = Integer.parseInt(eingabe2);
    •  int zahl3 = Integer.parseInt(eingabe3);

    Aber natürlich kann er mit zahl1-3 und eingabe 1-3 nix anfganen weil es ja nirgends deklariert wurde. Aber wie soll es gehen das ich nur einen kleinen Teil abändere?

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...