2014-01-31 3 views
2

Я хочу написать предложение, которое зависит от пола человека, вот что я мог бы сделать:Java формат строки состояния

String createSentence(String name, boolean isMale) { 
    return String.format(isMale ? "I met %s, he was OK." : "I met %s, she was OK.", name); 
} 

но вы уже видите неудачу в том, что (она работает, но код duplicit), я хочу что-то вроде:

String createSentence(String name, boolean isMale) { 
    return String.format("I met %s, %b?'he':'she' was OK.", name, isMale); 
} 

Этот код не работает, но что-то вроде этого возможно?

EDIT:

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

static String createSentence(String name, boolean isMale) { 
    return String.format("I met %s, "+(isMale?"he":"she")+" was OK.", name); 
} 
+1

Что не работает? [Ваш пример отлично работает.] (Http://ideone.com/LXNdBd) – BackSlash

+0

Ваш первый пример отлично подходит для меня. – Pshemo

+1

Да, он * делает * работает, но он порождает двуличность – kajacx

ответ

8

Как о

return String.format("I met %s, "+(isMale?"he":"she")+" was OK.", name); 

или

return String.format("I met %s, %s was OK.", name, (isMale ? "he" : "she")); 

Если вы можете изменить тип isMale в целое, которое, например, будет представлять отображение

  • 0 ->she,
  • 1 ->he

можно использовать MessageFormat и его {id,choce,optionValue}

static String createSentence(String name, int isMale) { 
    return MessageFormat.format("I met {0}, {1,choice,0#she|1#he} is fine", 
      name, isMale); 

} 
+0

Да, это решает эту конкретную проблему, я слишком упростил вопрос, мои аполиги, я отредактирую вопрос. – kajacx

0
String.format("I met %s, %s was OK.", name, isMale ? "he" : "she"); 
2

Вы могли бы пойти на комбинации:

String createSentence(String name, boolean isMale) { 
    return String.format("I met %s, %s was OK.", name, isMale? "he": "she"); 
} 
0

Вы могли бы пройти сам местоимение, а потом не придется беспокоиться о каких-либо условий.

static String createSentence(String name, String pronoun) { 
     return String.format("I met %s, %s was OK.", name, pronoun); 
} 

String sentence = createSentence("Fred", "he"); 

Если вам нужно использовать логические переменные, вы можете реализовать декоратор.

-1

Попробуйте это:

return "I met "+String.format(isMale ? " %s, he " : " %s, she ", name)+" was OK." 
Смежные вопросы