ArrayOutOfBoundException

Status
Nicht offen für weitere Antworten.
Hi Leute bin ein Neuling in den ewigen Weiten der JavaProgrammierung und habe eine Frage:

hab ein kleines Programm geschrieben, daß beliebig viele Operanden zusammenrechnen kann - doch bei der Ausgabe sagt er mir: java.lang.ArrayOutOfBoundException:0

Code:
class Taschenrechner{
	
	public static void main(String[] args){
	
		
		double sum = Double.parseDouble(args[100]);
		for(int x=4; x<= (args.length-1);x+=2){
			double a = Double.parseDouble(args[x]);
			char z = args[(x-1)].charAt(0);
			if(z== '-'){
				sum = (sum-a);
			}else{
				sum = (sum +a);
			}
		}System.out.println("Ergebnis: "+sum);
	}
}

und zwar an der Stelle: double sum = Double.parseDouble(args[100]);

nun hab ich schon versucht vor der main-Methode ein neues Array zu kreieren - dann geht garnichts mehr, auch hab ich schon versucht eine andere Definition zu finden.

doch nichts haut hin!!

Bitte um Hilfe
Danke und lg

[Edit by Beni: Codetags eingefügt]
 
B

Beni

Gast
Wieso versuchst du das 100ste Element zu parsen? Wieso schreibst du nicht einfach "double sum = 0;"?
 

Leroy42

Top Contributor
und warum schreibst du die Operationen mit in die Aufrufzeile?

java Taschenrechner arg0 arg1 arg2 + 17 - 99 hugo 88

:shock:

Lies doch direkt

java Taschenrechner 42 -42 +5.7 -5.7

Code:
double sum = 0;
for (double arg : args)
    sum += Double.parseDouble(arg);
 
das Programm soll so funktionieren, daß es die Zeichen die man eingibt konvertieren soll von String oder char auf Double.

Deshalb hab ich es benutzt!

lg
 
Danke für eure Tipps

@Leroy: funktioniert nicht so wirklich jetzt macht der compiler nimma mit - habs ausgetauscht, aber dann stimmt der rest nicht
 

tingel

Mitglied
Ohne Funktionsgarantie aus dem Kopf:

Code:
class Taschenrechner{
  public static void main(String[] args){ 
    double sum=0;
    for(int i=0;i<args.length;++i) {
      sum += Double.parseDouble(args[i]); 
    }
    System.out.println("Ergebnis: " + sum);
  } 
}

Note: Ich weiß, dass eine Exception geschmissen wird wenn args keine Zahl enthält.
 
Danke - endlich funktionierts!!!! jetzt muss ich nur noch checken, wie ich eine Kommandozeile entstehen lasse, in die ich beliebig viele Zahlen und Operanden schreiben kann - damit ich eine Rechnung bilden kann.

irgendeine Idee von euch??

hab versucht das untenstehend zu lösen und dann kann ich zwar eine gleichung eingeben, aber das Ergebnis bleibt 0.00

Code:
	System.out.println("Bitte Rechnung eingeben:" +args.length[]);
		einlesen();
		System.out.println("Ergebnis: "+numberFormat.format(sum));


lg nina
 

tingel

Mitglied
Ich weiß ja nicht, was du genau machen willst, aber wenn ich meinen Code so aufrufe:
java Taschenrechner 4 5 6
gibt es als Ergebnis 15.0
Bei java Taschenrechner 4 5 6 -5
gibt es 10.0.

Bau noch einen try-catch-Block drum herum und dein Taschenrechner funzt.
 
Also mein Code schaut jetzt so aus:

Code:
import java.text.*;
import java.io.*;

class Plusminus{
	private static NumberFormat numberFormat = new DecimalFormat("0.00");
	static double einlesen() throws Exception{
		BufferedReader in = new BufferedReader (new InputStreamReader (System.in));
		Number number = numberFormat.parse(in.readLine());
		return number.doubleValue();
	}
	
	public static void main(String[] args){	
		double sum = 0;
		try{
		for(int i=0; i< (args.length-1);i+=2){
			sum += Double.parseDouble(args[i]); 
			double j = Double.parseDouble(args[i]);
			char x = args[(i-1)].charAt(0);

			if(i=='-'){
				sum = (sum-j);
			}else{
				sum = (sum +j);
		}
}

		System.out.println("Bitte Rechnung eingeben:"  );
		einlesen();
		
		System.out.println("Loesung lautet: "+numberFormat.format(sum));
}
		catch(Exception e){
			e.printStackTrace();
		}
	}
}

und ich kann eine Rechnung eingeben - aber das Ergebnis is immer 0.00!!

ich verstehs einfach nicht - das is ja zum Haare verlieren!!
lg nina
 

Jockel

Top Contributor
Verstehe ich das richtig, dass du jetzt in deiner Methode einlesen einen Term einlesen und dann berechnen willst?
 

Jockel

Top Contributor
Deine Methode gibt einen Double-Wert zurück, welchen du aber stillschweigend unter den Tisch fallen lässt:
System.out.println("Bitte Rechnung eingeben:" );
einlesen();

Du musst den Rückgabewert ja auch irgendwo speichern:
double rueckgabewert;
rueckgabewert=einlesen()
System.out.println(rueckgabewert);

(ohne jetzt konkret bezug auf die ursprüngliche Fragestellung genommen zu haben.)
 
Status
Nicht offen für weitere Antworten.

Ähnliche Java Themen

Neue Themen


Oben