Search code examples
stringif-statementswitch-statementbooleanboolean-operations

JAVA Switches, if then else and booleans with string


I'm having a bit of trouble getting a few parts of my code to work properly. I'm still a bit new to java and could some direction and clues to where I went wrong.

The error comes from the if statements. I feel like i know why they are erring out because the || are undefined but I'm not sure how to fix it. What I'm trying to get it to do is take the inputs either L,R,F,B (left, right, forward and back). lowercase the input and either accept either one or the other using boolean "or".

import java.util.Scanner;

public class ChooseYourAdventure {

public static void main(String[]args) {
    Scanner input = new Scanner(System.in);             
    System.out.print("Choose a diection: ");
    String direction = input.nextLine().toLowerCase();
    System.out.printf(" %s and %s/n",getDirection (way),getYourChoice (found));

}

public static String getYourChoice (String found) {
    String result = "Unknown";
    switch (found)
    {
    case "l":
        result = " now we all know you can turn left unlike Zoolander";
        break;

    case "left":
        result = " now we all know you can turn left unlike Zoolander";
        break;

    case "r":
        result = " you fall down a hole never to be seen again... sad.";
        break;  

    case "right":
        result = " you fall down a hole never to be seen again... sad.";
        break;      

    case "f":
        result = " YOU ARE THE KWISATZ HADERACH!!";
        break;  

    case "forward":
        result = " YOU ARE THE KWISATZ HADERACH!!";
        break;

    case "b":
        result = " you are a scaredy cat but, you live to fight or runaway another day";
        break;

    case "back":
        result = " you are a scaredy cat but, you live to fight or runaway another day";
        break;
    }
    return result;
}

public static String getDirection(String way) {
    String result;
    if (way == "l" || "left") {
        System.out.print("Your character moves left");
    }

    else if (way == "r" || "right") {
        System.out.println("You character moves right");
    }

    else if (way == "f" || "forward") {
        System.out.println("Your character moves forward");
    }

    else if (way == "b" || "back") {
        System.out.println("Your character moves forward");
    }

    else {
        System.out.println(" You cant go that way ");
    }

    return result;
}

}


Solution

  • All your if statements are wrong. When using || or &&, you need to specify the variable way on each side of the ||:

    if (way == "l" || way == "left") {
        System.out.print("Your character moves left");
    }