2 svar
38 visningar
javajavisst är nöjd med hjälpen!
javajavisst 1
Postad: 11 maj 2020

Kassa som beräknar växel

Har gjort så att jag försökt att göra en kassa som beräknar växeln vid ett köp, men jag får ett fel som säger "Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 10 at kassa.main(kassa.java:30)" när jag använder vissa värden. Förstår ej hur jag ska bli av med detta error!

import java.util.Scanner;

public class kassa {

public static void main(String[] args) {
// TODO Auto-generated method stub
Scanner pengarinput = new Scanner(System.in);
Scanner prisinput = new Scanner(System.in);
Scanner betalsumma = new Scanner(System.in);
int belopp, rest, summa, pris, v=0, antalsedlar=0, antalvarv=0;
String tu="tusenlapp", fh="femhundralapp", th="tvahundralapp", eh="enhundralapp",
ft="femtiolapp", tj="tjugolapp", ti="tiokronors mynt", f="femkronorsmynt", t="tvakronorsmynt",
et="enkronorsmynt";

String pengar [] = {tu, fh, th, eh, ft, tj, ti, f, t, et};
int sedlar[] = {1000, 500, 200, 100, 50, 20, 10, 5, 2, 1};
System.out.println("Hur mycket ska du betala i kontant?");
belopp = pengarinput.nextInt();
System.out.println("Hur mycket kostar varan?");
pris = prisinput.nextInt();
rest = belopp-pris;

while(rest>0) {
if(rest>=sedlar[v]) {
for(int i = 0; i<sedlar.length-1; i++) {
if(rest<sedlar[v]) {
antalsedlar=0;
v++;
}
while(rest>=sedlar[v] || ) {
antalsedlar++;
rest-=sedlar[v];
}
if(antalsedlar!=0) {
antalvarv++;
if(antalvarv!=0) {
if(antalsedlar==1 && sedlar[v]>=20) {
System.out.print(antalsedlar + " st " + pengar[v] + "ar " + ", ");
}
else {
System.out.print(antalsedlar + " st " + pengar[v] + " " + ", ");

}
}
}
}
}
else {
antalsedlar=0;
v++;
}
}
if(pris>belopp) {
System.out.println("Du har inte råd!");
}
}
}

Laguna Online 8628
Postad: 11 maj 2020 Redigerad: 11 maj 2020

Jag ser inte här vilken rad 30 är. (Jag kan ju räkna, men jag låter dig göra jobbet.) Kolla vad för sorts indexering som görs på den raden och stoppa in en utskrift som visar vad indexet har för värde. Har du tur så kommer du på direkt vad som är fel.

Ännu bättre om du har en debugger, då kan då köra tills det smäller och sen titta på alla variabler.

Edit: det viktigaste: vilka vissa värden blir det fel för? Vet man det är mycket lättare att hjälpa till.

Edit2: jag kollade ändå på rad 30. Vad är det här?

      while(rest>=sedlar[v] ||)

Det borde inte ens gå igenom kompilatorn.

Laguna har rätt, koden går inte igenom kompilatorn.

.\Kassa.java:30: error: illegal start of expression

Svara Avbryt
Close