"Как я могу запросить ввод if-else после оператора switch?" - PullRequest
0 голосов
/ 14 октября 2019

После оператора switch я хотел бы запросить оператор 'Y' или 'N' и распечатать оператор для соответствующего ответа. Как я могу объявить входной символ, а затем предоставить вход для сканера для этого значения?

Я пытался использовать ввод в качестве символа и целого числа. Я также пытался использовать логический метод.

import java.util.*;
public class Dowhile {


  public static void main(String[] args) { 
    Scanner in = new Scanner(System.in);
    int x;
    System.out.println("0,1,-1: ");
    x = in.nextInt();

    switch(x)
    {
      case 1:
        System.out.println("Positive");
        break;
      case -1:
        System.out.println("Negative");
        break;
      case 0:
        System.out.println("Zero");
        break;
      default:
        System.out.println("You're a bad person!");
        break;
    }   

    char input = (('Y'||'N'));
    System.out.println("Enter 'Y' or 'N'");
    in.nextInt();                    
    if(input = 'Y')
      System.out.println("OK");
    else
      System.out.println("wow");



  }}

Я ожидаю, что вывод будет ответом println для соответствующего ввода.

Ответы [ 3 ]

2 голосов
/ 14 октября 2019

Я бы попробовал что-то вроде этого:

    System.out.println("Enter 'Y' or 'N'");
    char input = in.next("Y|N").charAt(0);
    if('Y' == input)
      System.out.println("OK");
    else
      System.out.println("wow");

Часть in.next("Y|N") запрашивает 'Y' или 'N' (строка "Y|N" интерпретируется как регулярное выражение) и возвращаетрезультат в виде строки. Функция charAt(0) возвращает первый (и единственный) символ из этой строки.

Обратите внимание, что этот подход вызывает исключение, если вы не введете ни Y, ни N.

Если выЧтобы избежать исключения, вы можете использовать следующий фрагмент кода:

    System.out.println("Enter 'Y' or 'N'");
    char input = in.next(".").charAt(0);
    if('Y' == input)
      System.out.println("OK");
    else if ('N' == input)
      System.out.println("wow");
    else
      System.out.println("You haven't entered a valid character");

Но будьте осторожны, поскольку ваш первый вызов in.nextInt() все равно не будет выполнен, если кто-то введет что-то, что не является целым числом.

1 голос
/ 14 октября 2019

Вы можете сделать это следующим образом:

import java.util.Scanner;

public class DoWhile {

    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        System.out.print("0,1,-1: ");
        int x = in.nextInt();

        switch (x) {
        case 1:
            System.out.println("Positive");
            break;
        case -1:
            System.out.println("Negative");
            break;
        case 0:
            System.out.println("Zero");
            break;
        default:
            System.out.println("You're a bad person!");
            break;
        }
        System.out.print("Enter 'Y' or 'N': ");
        String input = in.next();
        if (input.equalsIgnoreCase("Y"))
            System.out.println("OK");
        else if (input.equalsIgnoreCase("N"))
            System.out.println("Wow");
        else
            System.out.println("Incorrect input");
    }
}
0 голосов
/ 14 октября 2019

Предполагая, что вам не нужно расширять свою программу для выполнения чего-либо, кроме печати на консоли, я бы выбрал следующий подход:

public static void main(String[] args) { 
    Scanner in = new Scanner(System.in);

    System.out.println("0,1,-1: ");
    int x = in.nextInt();
    System.out.println(
            x == 1 ? "Positive" :
            x == -1 ? "Negative" :
            x == 0 ? "Zero" :
            "You're a bad person!"
    );

    System.out.println("Enter 'Y' or 'N'");
    System.out.println(in.next().equalsIgnoreCase("Y") ? "OK" : "wow");
    in.close();
}

Для проверкиусловия и печать на консоль без операторов switch или if.

...