Reputation: 41
Okay changed the code a bit, but the program still doesn't work properly. I want to be able to enter type of product (fruit) in the java console when program is run, enter any type of fruit (bananas, apples or oranges) and then enter a qty.
import java.util.*;
public class demo {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
String str[] = { "Bananas", "Apples", "Oranges" };
double price[] = { 2.09, 2.59, 2.25 };
int i = 0;
int j = 0;
System.out.print("Enter type of product: ");
String string = sc.nextLine();
if ("fruit".equals(string)) {
while (i < str.length) {
while (j < price.length) {
System.out.print(str[i++] + ": " + "£" + (price[j++]) + "p per bag \n");
}
}
}
System.out.print("\n");
System.out.print("Enter which type of " + string + ": ");
String string1 = sc.nextLine();
boolean strs = "bananas".equals(string1);
boolean strs1 = "apples".equals(string1);
boolean strs2 = "oranges".equals(string1);
if (strs) {
System.out.print("Enter qty of " + str[0] + " (by bag): ");
}
if (strs1) {
System.out.print("Enter qty of " + str[1] + " (by bag): ");
}
if (strs2) {
System.out.print("Enter qty of " + str[2] + " (by bag): ");
}
int qty = sc.nextInt();
int[] a = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };
int h = 1;
if ((a[h] == (qty)) && (strs) || (strs1) || (strs2)){
System.out.print("\n");
System.out.print(qty + " bag(s) of " + string1 + " have been added to your basket, " + "total costing £"
+ (qty) * price[0] + "p");
}
}
}
Any more ideas?
Upvotes: 0
Views: 157
Reputation: 1171
You are getting a InputMismatchException
that, according to the JavaDoc, is
thrown by a
Scanner
to indicate that the token retrieved does not match the pattern for the expected type, or that the token is out of range for the expected type.
So if you don't write "fruit"
as you requested (String string = sc.next("fruit")
), the execution terminates with that exception. So, to fix your code, you should replace
String string = sc.next("fruit");
with something like
String string = sc.nextLine();
if ("fruit".equalsIgnoreCase(string)) { /* design your control flow as you want */
You can apply the same rule to the other sc.next()
present in your code.
A side note: never swallow exceptions into a catch
block; always log them.
Upvotes: 0
Reputation: 3355
You have mistake is Reading strings.
Replace
String string = sc.next("fruit"); // Line 17
String string1 = sc.next("bananas"); // Line 26
String string2 = sc.next("apples"); // Line 30
String string3 = sc.next("oranges"); // Line 35
With
String string = sc.nextLine(); // Line 17
String string1 = sc.nextLine(); // Line 26
String string2 = sc.nextLine(); // Line 30
String string3 = sc.nextLine(); // Line 35
If you want to check the String
entered , then make use of following code:-
if(string.equals("fruit")){
// statements
}
Upvotes: 0
Reputation:
Your scanning of input line is wrong.To scan input data in Java you should use
Scanner in = new Scanner(System.in);
int a = in.nextInt(); // To input integer
char ch = in.nextChar(); // To input character
String str = in.nextLine(); // To get a complete line of input
String s = in.next(); //To get a single string
Replace your inputing line according to the above given.
Cheers :)
Upvotes: 0
Reputation: 186
Error is at String string = sc.next("fruit"); either change it to sc.nextLine() or Something like below
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
String str[] = { "Bananas", "Apples", "Oranges" };
double stk[] = { 1.09, 1.59, 1.25 };
int i = 0;
int j =0;
try {
System.out.print("Enter type of product: ");
String string = sc.next();
while (i < str.length) {
while (j < stk.length) {
System.out.print(str[i++] + ": " + "£" + (stk[j++]) + "p per bag \n");
}
}
System.out.print("\n");
System.out.print("Enter which type of "+string+": ");
String string1 = sc.next();
if(string1 != null) {
System.out.print("Enter qty of "+string1+ "(per bag) \n");
}
String string2 = sc.next();
if(string2 != null) {
System.out.print("Enter qty of " +string2+ "(in lbs) \n");
}
String string3 = sc.next();
if (string3 != null) {
System.out.print("Enter qty of " +string3+ "(in lbs) \n");
}
} catch (Exception e) {
System.out.println("Eror");
e.printStackTrace();
}
}
Upvotes: 1