Проверка на логическое значение в Java случае переключателя - PullRequest
0 голосов
/ 02 мая 2020

Итак, у меня есть дело переключателя в выключатель. Я ввожу строку, и мои дела .contains, как показано в моем коде ниже:

    intcheck: switch(line){
    case line.contains("0"):
    case line.contains("1"):
    case line.contains("2"):
    case line.contains("3"):
    case line.contains("4"):
    case line.contains("5"):
    case line.contains("6"):
    case line.contains("7"):
    case line.contains("8"):
    case line.contains("9"):
      break intcheck;
    default:
      names.put(br.readline(),0);
  }

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

1 Ответ

0 голосов
/ 02 мая 2020

Хотя это может быть сделано лучше другим способом, если вы настаиваете на конструкции switch-case, попробуйте это:

OptionalInt containedNumber = OptionalInt.empty();
Intcheck: for( var i = 0; i < 10; ++i )
{
  switch( i )
  {
    case 0: if( line.contains( "0" ) containedNumber = OptionalInt.of( 0 ); break Intcheck;
    case 1: if( line.contains( "1" ) containedNumber = OptionalInt.of( 1 ); break Intcheck;
    …
    case 9: if( line.contains( "9" ) containedNumber = OptionalInt.of( 9 ); break Intcheck;
    default:
      continue IntCheck;
  }
}
if( containedNumber.isEmpty() ) names.put( br.readline(), 0 )

Без switch-case:

OptionalInt containedNumber = OptionalInt.empty();
for( var i = 0; (i < 10) && containedNumber.isEmpty(); ++i )
{
    if( line.contains( Integer.toString( i ) ) containedNumber = OptionalInt.of( i );
}
if( containedNumber.isEmpty() ) names.put( br.readline(), 0 )
...