Du verwendest einen veralteten Browser. Es ist möglich, dass diese oder andere Websites nicht korrekt angezeigt werden. Du solltest ein Upgrade durchführen oder ein alternativer Browser verwenden.
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 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
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.
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)};
}
}
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.
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?
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".
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:
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 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.
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.
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).
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.
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.
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?
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"!
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.
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.
@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.
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.