Programm mit Eingabe

Unterausdruck bezeichnet einfach nur einen Ausdruck, der Teil eines größeren Ausdrucks ist. Und ich würde da Bedingung aufstellen, das dies ein Ausdruck ist, der in sich korrekt ist und ggf. auch genau so ausgewertet wird.

Der ganze Ausdruck ist "56.0 *x / 3". Das "56.0 *x" ist auch ein Ausdruck und wird als solches auch ausgewertet.
 
Ich würde meinen, dass z. B. "(a-2.0)" ein Unterausdruck im Ausdruck "(a-2.0) / b" ist. Der "bestimmte Operator" ist in dem Fall die Division.
 
Ich habe so eine Aufgabe von Sololearn, welches ich nicht lösen kann
You take a loan from a friend and need to calculate how much you will owe him after 3 months.
You are going to pay him back 10% of the remaining loan amount each month.
Create a program that takes the loan amount as input, calculates and outputs the remaining amount after 3 months.

Sample Input:
20000

Sample Output:
10628

Here is the monthly payment schedule:
Month 1
Payment: 10% of 20000 = 2000
Remaining amount: 18000
Month 2
Payment: 10% of 18000 = 1800
Remaining amount: 16200
Month 3:
Payment: 10% of 16200 = 1620
Remaining amount: 14580

Java:
import java.util.Scanner;

public class Program
{
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        int amount = scanner.nextInt();
        //your code goes here
        for (20000)
    }
}
Habt ihr paar Tips? Übrigens soll das mit einer loopschleife gelöst werden.
 
Du siehst ja die Beispielrechnung - da ist ja etwas berechnet worden. Was genau ist da jedes Mal berechnet worden? Wie oft ist es berechnet worden?

Wenn eine Sache x Mal gemacht wird, dann ist das typisch für eine Schleife, die eben x Mal durchläuft.
 
Also ich verstehe nicht, ob man mit einem Wert von 20000 rechnen muss, oder ob der Wert des Kredites noch eingegeben werden muss.
 
Ich habe das als (falsches) Ergebnis
Java:
import java.util.Scanner;

public class Program
{
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        int amount = scanner.nextInt();
        //your code goes here
   int x = amount;
        for (x ; x == 0,9*0,9*0,9*amount ; x*0,9 )
 {System.out.println(x)};
    }
}
 
Im netz habe ich folgende Lösung gefunden
Java:
import java.util.Scanner; public class Program {     public static void main(String[] args) {         Scanner scanner = new Scanner(System.in);         int amount = scanner.nextInt();         //your code goes here         
for(int i=0 ; i<3 ; i++)
{ int payment= ((amount*10)/100);
int remaining = amount - payment ; System.out.println(payment); System.out.println(remaining);
amount = remaining ;         }     } }
 
Beschreibe doch einfach erst einmal, was Du überhaupt berechnen willst. Was ist genau zu tun?

Sprich: Kannst Du den gegebenen Text so umwandeln, dass ich da eine Schritt für Schritt Anleitung für Dummies raus kommt?

Gegeben ist ja:
You take a loan from a friend and need to calculate how much you will owe him after 3 months.
You are going to pay him back 10% of the remaining loan amount each month.
 
Ich habe mal eine andere Frage
Java:
public class Program {
    public static void main(String[] args) {
        int [ ] myArr = {6, 42, 3, 7};
        int sum=0;
        for(int x=0; x<myArr.length; x++) {
            sum += myArr[x];
        }
        System.out.println(sum);
    }
}
Kann man sich das so vorstellen, dass sum pro Durchgang der Schleife an Wert zunimmt?
 
Spiel es doch im Debugger durch! Oder bau eine Ausgabe ein wie:
Java:
        for(int x=0; x<myArr.length; x++) {
            System.out.println("sum = " + sum + " + " + myArr[x])
            sum += myArr[x];
        }

Das wären handwerkliche Dinge, die Du üben solltest.

Ansonsten: Ja, im ersten Durchgang ist sum = 0, x=0, myArr[0] ist 6 und damit wird sum auf 0 + 6 (Berechnung von sum + myArr[0]) gesetzt.
 
Java:
package Objekt1;

public class Objekt1 {

  public static void main(String[] args) {
java.lang.String str;
    int len;

    str = new java.lang.String( "Elementar, mein lieber Watson!" );

    len = str.length();
    System.out.println("Die Laenge ist: " + len );
  }

}

Ich bin auf dieses Programm gestoßen, und verstehe manches nicht.
Was macht z. B. "java.lang.String str;"
Ist das ein Objekt? Ist str eine Variable?
 
Sag mal, wäre es nicht vernünftiger, Du würdest Dir ein Java-Buch kaufen? Das sind alles absolute Grundlagen.

java.lang ist das Paket, indem sich die Klasse String befindet. java.lang.String ist der vollqualifizierende Name (= inkl. Angabe des Pakets) der Klasse String. Die Angabe ist für java.lang überflüssig, d. h. die Angabe ist identisch zu
Code:
String str;
Und das wiederum ist nichts anderes als eine Deklaration, dass die Variable str vom Typ java.lang.String sein soll.

Ein Objekt ist das nicht - ein Objekt wäre eine Instanz der Klasse String. Normalerweise erzeugt man Instanzen mit dem new-Operator, bei Strings verwendet man dagegen in der Regel String-Literale, also etwas wie "X".
 
Sag mal, wäre es nicht vernünftiger, Du würdest Dir ein Java-Buch kaufen? Das sind alles absolute Grundlagen.

Habe paar Bücher, finde es aber praktisch, Sachen im Internet zu lesen. Weil dann kann man die Programme direkt ausführen.
 
Erstmal der Datentyp String wird groß geschrieben.
Java:
String str;
str = new String("Beispiel");
 
So kompliziert ist das mit den Objekten nicht. Das Grundprinzip muss man nur einmal verstanden haben und das ist vom Prinzip her an die reale Welt angelehnt.

Jedes Objekt (=Instanz) wurde nach einem Bauplan (=Klasse) gebaut. Ein Bauplan (=Klasse) ist dabei auch wieder nur ein Objekt - halt vom Typ Bauplan (=Class). Wenn Du ein neues Objekt von einem Bauplan her haben willst, dann musst Du es erzeugen (= new Schlüsselwort).

So kann man auch noch immer weitere Dinge darstellen.

Jetzt kommt noch eine Besonderheit zustande. Im Java Code gibt es sogenannte Literale. Diese werden vom Compiler entsprechend umgewandelt. Wenn Du also z.B. eine Zahl wie 13 im Quellcode schreibst (Was ja eigentlich nur zwei Zeichen sind ... eine 1 und eine 3), dann macht der Compiler daraus die entsprechende Zahl. Das ist noch relativ einfach, da wir die Zeichen ebenso lesen.
Es gibt Literale aber auch für Strings. Wenn Du im Quellcode ein "Beispiel" schreibst - also incl. der Anführungszeichen - dann baut der Compiler daraus bereits eine String Instanz. Daher wird Dein Code:
Java:
String str = new String("Beispiel");
vom Compiler zu etwas gemacht wie:
Java:
String str = new String(new String("Beispiel"));

Das stimmt so nicht ganz, aber was wichtig ist: Aus dem "Beispiel" macht der Compiler bereits ein Objekt vom Typ String. Daher ist hier das new String nicht notwendig. Und es ist üblich, einfach nur folgendes zu schreiben:
Java:
String str = "Beispiel";
 
Habe paar Bücher, finde es aber praktisch, Sachen im Internet zu lesen. Weil dann kann man die Programme direkt ausführen.
Ich weiß nicht, ob das so gut ist. Das Beispiel zuvor
You take a loan from a friend and need to calculate how much you will owe him after 3 months.
You are going to pay him back 10% of the remaining loan amount each month.
Create a program that takes the loan amount as input, calculates and outputs the remaining amount after 3 months.
"löst" Du, indem Du einfach irgendeinen Code kopierst. Das ist nicht Sinn der Sache.

Ich hätte oben erwartet, dass Du Dir Gedanken machst in der Art:

1. Ich leihe mir einen Betrag x, z. B. am 1. Januar. Zu Beginn entspricht der zurückzuzahlende Betrag r also x
2. Nach dem ersten Monat (1. Februar) zahle ich 10 % des noch zurückzuzahlenden Betrags r x zurück. r verringert sich dementsprechend.
3. Nach dem zweiten Monat (1. März) zahle ich 10 % des noch zurückzuzahlenden Betrags r x zurück. r verringert sich dementsprechend.
4. Nach dem dritten Monat (1. April) zahle ich 10 % des noch zurückzuzahlenden Betrags r x zurück. r verringert sich dementsprechend.

Das kann man als Algorithmus formulieren:
Code:
kredit := 20000 
rest :=  kredit 

zahlung := rest * 0.1
rest := rest - zahlung

zahlung := rest * 0.1
rest := rest - zahlung

zahlung := rest * 0.1
rest := rest - zahlung

Ausgabe von rest als Restbetrag

Das wäre eine mögliche Lösung. Hier sieht man, dass sich die drei Blöcke wiederholen. Hier kann man also mit einer Schleife arbeiten:
Code:
kredit := 20000 
rest :=  kredit 

wiederhole dreimal {
    zahlung := rest * 0.1
    rest := rest - zahlung
}

Ausgabe von rest als Restbetrag
Und den Spaß dann nach Java übersetzen.
 
Also das mit den Objekten finde ich echt schwer. Das hat mich entmutigt. Ich komme da total durcheinander.
Das hatte ich auch und ich muss auch ständig nochmal nachlesen damit ich nicht durcheinanderkomme mit den Bezeichnungen und was wohin gehört etc.
Mir hat z.B. brotcrunsher auf YT geholfen (hoffe ich darf das hier so sagen?!). Gibt da aber reichlich Videos auf verschiedenen Kanälen, die erklären und gleichzeitig zeigen.
Vllt. bringt dir das ja was.
 
Mir hat z.B. brotcrunsher auf YT geholfen
OK, danke für den Tipp. Bei mir ist es so, ich verstehe so langsam einiges, aber mir fällt es schwer, alles zu merken. Also ich vergesse vieles wieder. Vielleicht schreibe ich paar Sachen auf und kann es mir dann merken.
löst" Du, indem Du einfach irgendeinen Code kopierst. Das ist nicht Sinn der Sache.
Ja, aber ich versuche erst, es selbst zu lösen, und wenn ich es nicht schaffe, dann schaue ich nach.
 
Java:
package Scanner1;
import java.util.Scanner;
public class Scanner1 {

  public static void main(String[] args) {
String inData;
    Scanner scan = new Scanner( System.in );

    System.out.println("Geben Sie die Daten ein: ");
    inData = scan.nextLine();

    System.out.println("Sie haben eingegeben: " + inData );
  }

}
Was passiert bei inData = scan.nextLine(); ?
 
Möglichkeiten, die du alle durchgehen solltest:
a) Dokumentation lesen: Was steht in der Dolumentation zu Scanner, speziell bei nextLine?
b) Code ausprobieren: wie verhält es sich denn?

Das sind Dinge, die ich Dir sehr ans Herz legen würde für die Zukunft, denn dabei lernst du mit am Meisten.

Ansonsten es liest nextLine die nächste Zeile ein und gibt diese ohne Zeilenumbruch zurück. Das, was zurück gegeben wird, wird in der Variablen gespeichert (bzw. die Referenz auf den String wird gespeichert).
 
Ich habe noch eine Frage : Ist es eigentlich sinnvoll, sich mit einem Buch an den Rechner zu setzen? Weil mir kommt das umständlich vor.
 
Java:
class MyClass {

    static void sayHello() {
        System.out.println("Hello World!");
    }

    public static void main(String[ ] args) {
        sayHello();
    }

}
Warum wird am Anfang public und main weggelassen?
Wie nennt man das, was hier gemacht wird?
 
Das main fehlt oben, weil es im Prinzip der name der Main-Methode ist. Die Methode oben heißt halt einfach sayHello anstatt main. Die main Methode ist die Methode, die von Java Standardmäßig beim Starten der Klasse aufgerufen wird. In diesem Fall wurde das printen von Hello World einfach noch in eine neue Methode ausgelagert, die dann von der main aus aufgerufen wird.

Dadurch, dass das public fehlt, ist die sayHello Methode nicht außerhalb des Package erreichbar. Wenn sie nur in der "MyClass" Klasse verwendet wird könnte da zum Beispiel auch private stehen, dann wäre sie nur in der Klasse selbst verfügbar.

Bei Youtube gibt es übrigens einige Anfänger Tutorials zum Thema Java. Solche Sachen werden da bestimmt ziemlich am Anfang erklärt.
 
Warum wird am Anfang public und main weggelassen?
Wie nennt man das, was hier gemacht wird?
Das ist eine ganz normale Klassendeklaration. Die Klasse ist nicht öffentlich und ohne speziellen Sichtbarkeitsmodifikator nennt man das "package private".

Ein Programm braucht nur eine einzige main() Methode, die den Startpunkt der Anwendung darstellt. In welcher Klasse die ist, bleibt dir überlassen.
 
Java:
class MyClass {

    static int sum(int val1, int val2) {
        return val1 + val2;
    }

    public static void main(String[ ] args) {
        int x = sum(2, 5);
        System.out.println(x);
    }
}
Was wird in diesem Programm gemacht?
Was macht das "return"? Ist hier ein Array enthalten?
 
Ich glaube er spielt auf das Array was der Main übergeben wird an.

Das sind die Parameter die du beim Start des Programms in der Kommandozeile mit geben kannst.

java -jar MyClass.jar (Parameter)
 
Alter, mach mal einen gescheiten Java-Kurs. Das hat so doch keinen Sinn!
Was soll das heißen? Du wirst hier zu nichts gezwungen. Wenn du keine Lust hast zu programmieren, dann mach halt was anderes. Und nenn mich nicht "alter"!
Java:
return val1 + val2;
Ich kenne dieses "return" gar nicht.
 
Zuletzt bearbeitet:
Ich kenne dieses "return" gar nicht.
Ein Forum ersetzt weder Buch noch Kurs. Das kann ein Forum schlicht nicht leisten. Die Leute hier versuchen anderen bei Verständnisfragen zu helfen und Hilfe zur Selbsthilfe zu geben.

Deine Fragen lassen nicht den Ansatz eines roten Fadens erkennen. Du springst unsystematisch zwischen irgendwelchen Codes und Themen herum, die Du irgendwo im Internet gefunden hast, kennst aber nicht einmal die grundlegendsten Grundlagen der Sprache.

Oben hast Du geschrieben, dass Du Bücher besitzt. Ich hoffe mal, dass da auch welche dabei sind, die sich um die Programmiersprache Java drehen. Die wurden in der Regel von Leuten geschrieben, die Ahnung nicht nur von der Materie sondern auch von der Vemittlung von Wissen haben und Dich bei der Hand nehmen und durch das Thema führen. Im Sinne der Hilfe zur Selbsthilfe: benutz die Dinger.
 
Ich kenne dieses "return" gar nicht.
Das ist der Grund, aus dem ich dir einen guten Java-Kurs ans Herz legen würde. Da sollte das notwendige Wissen, Schritt für Schritt aufeinander aufbauend, sinnvoll vermittelt werden.

Das dabei dennoch Fragen auftreten können ist unbestritten und da kann dir hier sehr gut geholfen werden.
 
return val1 + val2;
Ist eine Zusammenfassung von
Java:
int ergebnis = val1 + val2;
return ergebnis;
Was eine Addition von zwei int Variablen ist und was ein return Befehl mit oder ohne parameter ist wirst du wohl wissen.
 
@brypa Und bevor Du fragst: die Klammern umschließen die Parameterliste, das Komma trennt die Parameter, das Semikolon/der Strichpunkt schließt die Anweisung ab und das = weist das Ergebnis des Methodenaufrufs der als int deklarierten Variable res zu.
 
Das ist der Grund, aus dem ich dir einen guten Java-Kurs ans Herz legen würde.
Dann sag doch mal, was für einen Java - Kurs du meinst und wo es das gibt.

Ich mache bereits "Java Gailer Java Kurs Interaktiv".
Und bevor Du fragst
Also ich finde, es kommt darauf an, erstmal die Grundlagen solide zu beherrschen und dann die fortgeschrittenen Sachen zu machen.
 
Dann sag doch mal, was für einen Java - Kurs du meinst und wo es das gibt.

Ich mache bereits "Java Gailer Java Kurs Interaktiv".
Also ich finde, es kommt darauf an, erstmal die Grundlagen solide zu beherrschen und dann die fortgeschrittenen Sachen zu machen.
Den finde ich für den Anfang nicht so schlecht. Rest, siehe Kommentar von @mihe7.

Ansonsten kann ich nicht viel dazu sagen, weil ich zu Java als Quereinsteiger von diversen anderen Sprachen gekommen bin. Da ist der Aufwand nicht so groß, dass man einen extra Kurs braucht. "Java von Kopf bis Fuß" soll ganz gut sein (Buch).

Edit: Ansonsten gibt es doch auch hier im Forum jetzt einen Kurs, den man buchen kann.
 

Zurück
Oben