Probleme beim Array

Chita100

Mitglied
Hallo alle zusammen. Ich bin Java Anfänger und habe mich jetzt durch einige Aufgaben mal durchgearbeitet. Jetzt habe ich eine Aufgabe wo ich eine lineare Abschreibung darstellen soll.

Hab soweit auch schon echt viel geschafft, bin aber jetzt auf das Problem gestoßen das mir beim kompilieren folgender Fehler gezeigt wird:

H:\javac abschreibung.java
abschreibung.java:42: error: incompatible types
restbuchwert = wert-abbetrag;
.............................^
required: double[]
found: double
1 error


Bin mit der For-Schleife ran gegangen weil ich mir dachte das so das Programm einfach durchlaufen könnte und mir somit alles ausgibt was ich halt haben möchte.
hier mal meine komplette Datei dazu!
Hoffe ihr habt ne Idee woran es liegt!!!

Java:
import java.io.*;
class abschreibung
{
public static void main (String[] args) throws IOException
{
BufferedReader stdin = new BufferedReader (new InputStreamReader(System.in));
String input;
 
double bezeichnung;
System.out.println("Was haben Sie angeschafft?");
{BufferedReader ein = new BufferedReader(new InputStreamReader(System.in));
	String s = ein.readLine();

double wert;
System.out.println("Wieviel hat es gekostet?"); 
input = stdin.readLine();
wert = Integer.parseInt( input );
 
double afadauer;
System.out.println("Wie lange ist die Nutzungsdauer");
input = stdin.readLine();
afadauer = Integer.parseInt(input);
 
while (afadauer > 20)
{System.out.println("Fehler. Bitte Ueberpruefen Sie Ihre Eingabe!");
	System.out.println("");
	System.out.println("Wie lange ist die Nutzungsdauer");
	input = stdin.readLine();
	afadauer = Integer.parseInt(input);
}

System.out.println("");
System.out.println("Abschreibungsverlauf:" + s);
System.out.println("--------------------------------------------");

double abbetrag;
double x;
double[] restbuchwert = new double[20];
for (x = 0; x <= 20; x++) 
{
	abbetrag = wert / afadauer;
	restbuchwert = wert-abbetrag;
	System.out.println(x + ". Jahr: Abschreibungsbetrag " + abbetrag + 
				" EUR; Restbuchwert " + restbuchwert + " EUR"); 
}
}
}
}
 
Okay, danke erstmal an euch beide.

Der Link von Marcinek ist echt gut!

Nun weiß ich schon mal wo ich ansetzen muss. Werd für heute erstmal aufhören und morgen weiter dran arbeiten!
Wenn ichs hab sag ich bescheid! 😀
 
Ich hab's mal kopiert und geändert, wie ich das meine:

Java:
    public static void main(String[] args) throws IOException {
        BufferedReader stdin = new BufferedReader(new InputStreamReader(System.in));
        String input;

        String bezeichnung_s;
        System.out.println("Was haben Sie angeschafft?");
        BufferedReader ein = new BufferedReader(new InputStreamReader(System.in));
        bezeichnung_s = ein.readLine();

        double wert;
        System.out.println("Wieviel hat es gekostet?");
        input = stdin.readLine();
        wert = Integer.parseInt(input);

        double afadauer;
        System.out.println("Wie lange ist die Nutzungsdauer");
        input = stdin.readLine();
        afadauer = Integer.parseInt(input);

        while (afadauer > 20) {
            System.out.println("Fehler. Bitte Ueberpruefen Sie Ihre Eingabe!");
            System.out.println("");
            System.out.println("Wie lange ist die Nutzungsdauer");
            input = stdin.readLine();
            afadauer = Integer.parseInt(input);
        }

        System.out.println("");
        System.out.println("Abschreibungsverlauf:" + bezeichnung_s);
        System.out.println("--------------------------------------------");

        double abbetrag;
        double[] restbuchwert = new double[20];
        for (int x = 0; x < 20; x++) {
            abbetrag = wert / afadauer;
            restbuchwert[x] = wert - abbetrag - (x != 0 ? restbuchwert[x - 1] : 0D);
            System.out.println(x + ". Jahr: Abschreibungsbetrag " + abbetrag
                    + " EUR; Restbuchwert " + restbuchwert[x] + " EUR");
        }
    }

Diese Ausgabe ist nur noch etwas seltsam:

Code:
Was haben Sie angeschafft?
handy
Wieviel hat es gekostet?
100
Wie lange ist die Nutzungsdauer
15

Abschreibungsverlauf:handy
--------------------------------------------
0. Jahr: Abschreibungsbetrag 6.666666666666667 EUR; Restbuchwert 93.33333333333333 EUR
1. Jahr: Abschreibungsbetrag 6.666666666666667 EUR; Restbuchwert 0.0 EUR
2. Jahr: Abschreibungsbetrag 6.666666666666667 EUR; Restbuchwert 93.33333333333333 EUR
3. Jahr: Abschreibungsbetrag 6.666666666666667 EUR; Restbuchwert 0.0 EUR
4. Jahr: Abschreibungsbetrag 6.666666666666667 EUR; Restbuchwert 93.33333333333333 EUR
5. Jahr: Abschreibungsbetrag 6.666666666666667 EUR; Restbuchwert 0.0 EUR
6. Jahr: Abschreibungsbetrag 6.666666666666667 EUR; Restbuchwert 93.33333333333333 EUR
7. Jahr: Abschreibungsbetrag 6.666666666666667 EUR; Restbuchwert 0.0 EUR
8. Jahr: Abschreibungsbetrag 6.666666666666667 EUR; Restbuchwert 93.33333333333333 EUR
9. Jahr: Abschreibungsbetrag 6.666666666666667 EUR; Restbuchwert 0.0 EUR
10. Jahr: Abschreibungsbetrag 6.666666666666667 EUR; Restbuchwert 93.33333333333333 EUR
11. Jahr: Abschreibungsbetrag 6.666666666666667 EUR; Restbuchwert 0.0 EUR
12. Jahr: Abschreibungsbetrag 6.666666666666667 EUR; Restbuchwert 93.33333333333333 EUR
13. Jahr: Abschreibungsbetrag 6.666666666666667 EUR; Restbuchwert 0.0 EUR
14. Jahr: Abschreibungsbetrag 6.666666666666667 EUR; Restbuchwert 93.33333333333333 EUR
15. Jahr: Abschreibungsbetrag 6.666666666666667 EUR; Restbuchwert 0.0 EUR
16. Jahr: Abschreibungsbetrag 6.666666666666667 EUR; Restbuchwert 93.33333333333333 EUR
17. Jahr: Abschreibungsbetrag 6.666666666666667 EUR; Restbuchwert 0.0 EUR
18. Jahr: Abschreibungsbetrag 6.666666666666667 EUR; Restbuchwert 93.33333333333333 EUR
19. Jahr: Abschreibungsbetrag 6.666666666666667 EUR; Restbuchwert 0.0 EUR

Anmerkungen:

{ } beschränkt die Sichtbarkeit (den Scope) der darin definierten Variablen
Variablen kann direkt bei der Deklaration ein Wert zugewiesen weren (Initialisierung)
Variablennamen sollten nach Konvention in lowerCamelCase sein
Neben der while- gibt es die do-while-Schleife
println() kann auch ohne Argument/Parameter aufgerufen werden
Als Typ einer (Schleifen)-Zählvariable sollte Ganzzahl (meistens int) gewählt werden (mit Bezeichnung i, j, k usw.)
Geldbeträge immer in Ganzzahl speichern, damit keine Rundungsfehler auftreten

Hier noch mal überarbeitet:

Java:
    public static void main(String[] args) throws IOException {
        BufferedReader input = new BufferedReader(new InputStreamReader(System.in));

        System.out.println("Was haben Sie angeschafft?");
        String bezeichnung = input.readLine();

        System.out.println("Wieviel hat es gekostet?");
        double wert = Integer.parseInt(input.readLine());

        System.out.println("Wie lange ist die Nutzungsdauer");
        double afadauer = Integer.parseInt(input.readLine());

        while (afadauer > 20) {
            System.out.println("Fehler. Bitte Ueberpruefen Sie Ihre Eingabe!");
            System.out.println("");
            System.out.println("Wie lange ist die Nutzungsdauer");
            afadauer = Integer.parseInt(input.readLine());
        }

        System.out.println("");
        System.out.println("Abschreibungsverlauf:" + bezeichnung);
        System.out.println("--------------------------------------------");

        final double abbetrag = wert / afadauer;
        double restbuchwert = wert;
        for (int i = 0; i < 20; i++) { // oder restbuchwert > 0
            System.out.println(i + 1 + ". Jahr: Abschreibungsbetrag " + abbetrag
                    + " EUR; Restbuchwert " + (restbuchwert -= abbetrag) + " EUR");
        }
    }

Grüßle
 

Neue Themen


Zurück
Oben