hm087ster
hm087ster

Reputation: 41

Can't get this Java program to work

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

Answers (4)

Robert Hume
Robert Hume

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

anoopknr
anoopknr

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

user7552123
user7552123

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

NKR
NKR

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

Related Questions