Что приходит первым? Символ или Строка?

java if-statement char stringbuilder uppercase

47 просмотра

2 ответа

Большинство примеров, которые я нахожу в поиске ответа, встроены в сложный код. Я просто пытаюсь заставить программу вопросов знать, чтобы она принимала ответы в верхнем или нижнем регистре на вопрос с двумя ответами (бинарный?), А затем использовала любой из ответов, чтобы перейти к единственному результату. Я попробовал подход if / else, прежде чем нашел методы класса символов в своей книге, но он помогает только наполовину с его примерами.

вот код:

 import java.util.Scanner;
public class MarriageQuiz
{
public static void main(String[] args)
{   
  char isMarried = 'M';
  char isSingle = 'S';
  String marStat;

  System.out.print("Please enter your Marital Status (M or S) >> ");
  marStat = input.nextLine();

     if(marStat.isUppercase(isMarried | isSingle))
     {
        marStat = input.nextLine();
     }
     else if((marStat.isLowercase(isMarried | isSingle)))
     {
        marStat = marStat.toUpperCase(isMarried | isSingle);
     }
     System.out.print("You are " + marStat);
}
} 
Автор: Ryan Martin Источник Размещён: 08.11.2019 10:55

Ответы (2)


2 плюса

Решение

Просто преобразуйте все входные данные в ожидаемый регистр (верхний или нижний регистр, вы выбираете один).

Не пострадает попытка преобразовать персонажа в один случай, который уже есть в этом случае. toUppercaseМетод не жалуется , когда вы вызываете его без необходимости. Так что не нужно проверять на случай вообще.

marStat = marStat.toUppercase() ;
if ( marStat.equals( 'S' ) {
    … do Single stuff
} else if ( marStat.equals( 'M' ) {
    … do Married stuff
} else {
    … handle unexpected input
}

Совет: если вы выполняете этот код миллион раз, подумайте о замене использования charпримитива Characterклассом, чтобы избежать автобоксирования, обсуждаемого в руководстве по Oracle .

Автор: Basil Bourque Размещён: 20.08.2016 06:15

0 плюса

isUppercaseи isLowercaseне работает так вообще. И ваш код имеет мало смысла.

Кажется, что вы хотите сравнить только символы, но вы вызвали, nextLineкоторый возвращает String. И в операторах if, вы как-то просите ввод пользователя снова . Я действительно не знаю, что ты здесь делаешь.

Я думаю, вы хотите что-то вроде этого:

char isMarried = 'M';
char isSingle = 'S';
char marStat;

System.out.print("Please enter your Marital Status (M or S) >> ");
marStat = input.nextLine().charAt(0);

if(marStat == 's' || marStat == 'S')
{
   System.out.println("You are single!");
}
else if(marStat == 'm' || marStat == 'M')
{
   System.out.println("You are married!");
}

Я не думаю, что вы полностью понимаете, как работает программирование.

Автор: Sweeper Размещён: 20.08.2016 06:19
Вопросы из категории :
32x32