Permalänk

hjälp med java kod

Hej alla glada programmera!

Jag har skapat ett program för att räkna ut bensinförbrukning för en viss sträcka. Användaren ska själv kunna ange om bensinförbrukningen skall beräknas enligt EU- eller US-standard genom att svara 'E' eller 'U' på en fråga
Inget jag gör verkar fixa problemet. Snälla kan någon se vad jag har skrivit för fel och ge tips på hur jag kan fixa det. Är väldig tacksam för svar.

import java.util.Scanner;

public class Bensinforbrukning {

public static void main(String[] args) {

Scanner scan = new Scanner(System.in);

double km;
double forbrukningILiterPer100km;
double liter;
int gallons;
int miles;
String userChoice;

System.out.print("Skriv in antal km: ");
km = scan.nextInt(); /* läs in antal km*/

System.out.print("Skriv in antal liter: ");
liter = scan.nextInt(); /* läs in antal liter*/

//Det är här som programmet krashar.

System.out.println("För att beräkna bensinförbrukningen i EU- standard svara E. Om US-standard svara U på frågan!");
{ if (userChoice.charAt(0) == 'u') {
userChoice.equals("u");
}

//Om användaren väljer "u" så skivs svaret i gallons / mile.
gallons = (int) (liter * 3.785);
miles = (int) (km * 1.609);
forbrukningILiterPer100km = (liter*3.785)/(km*1.609);

{ if (userChoice.charAt(0) == 'e');
userChoice.equals("e");
//Om användaren väljer "e" så skivs svaret i liter/ km.

forbrukningILiterPer100km = liter / km;

}
System.out.println("Förbrukningen var " + forbrukningILiterPer100km+ "Liter / km.");
}

}
}

Permalänk

Re: hjälp med java kod

Citat:

Ursprungligen inskrivet av devil-angel

{ if (userChoice.charAt(0) == 'u') {
userChoice.equals("u");
}

//Om användaren väljer "u" så skivs svaret i gallons / mile.
gallons = (int) (liter * 3.785);
miles = (int) (km * 1.609);
forbrukningILiterPer100km = (liter*3.785)/(km*1.609);

{ if (userChoice.charAt(0) == 'e');
userChoice.equals("e");
//Om användaren väljer "e" så skivs svaret i liter/ km.

forbrukningILiterPer100km = liter / km;

}
System.out.println("Förbrukningen var " + forbrukningILiterPer100km+ "Liter / km.");
}

}
}

Dina if-satser är fel, man använder if() {} och inte { if() }

if (userChoice.charAt(0) == 'u') { userChoice.equals("u"); gallons = (int) (liter * 3.785); miles = (int) (km * 1.609); forbrukningILiterPer100km = (liter*3.785)/(km*1.609); } else if (userChoice.charAt(0) == 'e'); { userChoice.equals("e"); //Om användaren väljer "e" så skivs svaret i liter/ km. forbrukningILiterPer100km = liter / km; } else { // Användaren skrev varken e eller u } System.out.println("Förbrukningen var " + forbrukningILiterPer100km+ "Liter / km.");

I övrigt ser jag inte att du någonstans låter användaren skriva in e eller u.

Visa signatur

UNIX/Programmering.

Permalänk

Tack! Jag ser att måsvingarna var fel placerade

Jag har precis testat koden igen men den kraschar på samma ställe. Har du andra tips på vad felet kan vara?

Tacksam för svar

Permalänk
Medlem

Som Voidhanger påpekade så låter du inte användaren skriva in e eller u någonstans. userChoice är därför tom, och att försöka komma åt det första tecknet i userChoise går alltså inte. Det borde dock betyda att programmet kraschar vid den första if-satsen, och inte där din kommentar är, så det kanske är något annat som är fel också.

Permalänk
Citat:

Ursprungligen inskrivet av devil-angel
Tack! Jag ser att måsvingarna var fel placerade

Jag har precis testat koden igen men den kraschar på samma ställe. Har du andra tips på vad felet kan vara?

Tacksam för svar

Skriv gärna felmeddelanden du får från kompilatorn/debuggern. Det blir enormt mycket lättare för oss att hjälpa dig då

EDIT: Ser nu att jag har min julavatar kvar. Humm

Visa signatur

UNIX/Programmering.

Permalänk

oj vad snabba ni är med era svar. Jag ska försöka komma på en kod som tillåter användaren att ange antingen "e" eller "u" så jag återkommer med svar. Tack alla för alla snälla svar..

Permalänk

System.out.println("För att beräkna bensinförbrukningen i EU- standard svara E. Om US-standard svara U på frågan!");
userChoice = scan.nextInt(); //Det här är koden som ska tillåta användaren att välja mellan "u" eller "e" och det funkar bra, men sedan kraschar systemet igen.
if (userChoice.charAt(0) == 'u') {
userChoice.equals("u");

gallons = (int) (liter * 3.785);
miles = (int) (km * 1.609);
forbrukningILiterPer100km = (liter*3.785)/(km*1.609);

} else if (userChoice.charAt(0) == 'e'); {
userChoice.equals("e");
//Om användaren väljer "e" så skivs svaret i liter/ km.
forbrukningILiterPer100km = liter / km;

Jag är ingen vidare bra på det här med programmering märker jag. Jag ser inte vad felet är. Jag får följande felmeddelande: Exception in thread "main" java.util.InputMismatchException.

(userChoice.charAt(0) == 'U'); alltså om användaren skriver in "u" så kommer svaret ut i gallons/mile men jag kanske använder fel metod för att avgöra. Kan ni föreslå något annat?

Permalänk

Testa userChoice = scan.next();

Visa signatur

Anything that can go wrong will go wrong.

Permalänk

Tack men det är som jag har använt mig av, och det delen verkar funka bra men sedan kraschar den igen precis vid if (userChoice.charAt(0) == 'u') {
userChoice.equals("u");. Alltså användaren får ange antingen "u" eller "e" men sen skiter det sig.

Permalänk

Jo, men du har skrivit "userChoice = scan.nextInt();" Funkar det verkligen att skriva in en bokstav med "nextInt" ?

Visa signatur

Anything that can go wrong will go wrong.

Permalänk

oh vad dum jag känner mig nu, självklart så går det inte att skriva in ett bokstav med nextint. Du är min hjälte, tusen tack.

Permalänk
Medlem

Prova att läsa in 'u' eller 'e' med:

Char userChoice //gör om från String som du har nu

userChoice = (Char)java.util.scanner.nextByte();

sen ändrar du

} else if (userChoice.charAt(0) == 'e'); {

} else if (userChoice == 'e'); {

Permalänk

Tack Parez men problemet har nu löst sig. Tack alla för era svar. Trevlig helg allihopa!