2011-01-20 2 views
0
import java.io.*; 

public class MyName 
{ 
    public static void main (String [] xxx) throws IOException 
    { 
     String a; 

     BufferedReader read = new BufferedReader (new InputStreamReader (System.in)); 

     System.out.print("Input A Name : "); 
        a = read.readLine(); 
     System.out.print("\n"); 
     System.out.println("Your Name : " +a); 
     System.out.println("Name Capacity: " +a.capacity()); 
     System.out.println("Length Of A Name : "+a.length()); 

     /*After the first word of the name (if the name is more than one word) 
        then the first letter of each word must in uppercase*/ 
     System.out.println((a)+" change to = ".....); //i have no idea what code to wite 
    } 
} 

Вход: Дэй-ЛьюисКак совместить InputStreamReader с StringBuffer?

Ожидаемый результат:

Дэй-Льюис = ... -> емкость входной строки

Дэй-Льюис = ... -> длина ввода строка

"Дэй-Льюис" изменено на "Дэй-Льюис"


+1

В чем именно ваш вопрос? Как использовать слова в строке? Чтение последующих строк из сообщения? –

+0

помогите мне пожалуйста .. ?? – fortysant

+1

@fortysant, ваше название, по-видимому, не соответствует вопросу, который несколько скрыт в коде. Пожалуйста, отредактируйте его еще раз, измените название и добавьте несколько слов, чтобы описать, что вам действительно нужно. Пример Строки для ввода и ожидаемого вывода также будут полезны! –

ответ

2

Если вы используете Apache Commons/Lang, вы можете сделать это:

String capitalized = WordUtils.capitalize(orig); 

И если вы хотите обеспечить заглавным (например, никакие другие буквы в верхнем регистре, за исключением инициалов), вы можете сделать это (спасибо @manoj):

String capitalized = WordUtils.capitalizeFully(orig); 
// almost equivalent to WordUtils.capitalize(orig.toLowerCase()); 

Ссылка:

+0

Я думаю, что CapizeFully() является лучше избегать опечаток и случайного верхнего регистра в середине слов. – Manoj

+0

@Manoj спасибо за подсказку, не знал, что один –

1

Какой ваш вопрос? Я не понимаю!

Одна идея вас вопрос название это:

StringBuffer sb = new StringBuffer(); 
BufferedReader br = new BufferedReader (new InputStreamReader (System.in)); 
String s; 
while(s=br.readLine() != null) { 
    sb.append(s); 
} 

Но я не понимаю вас проблемы. Приветствия.

2

Если вы не хотите изобретать велосипед (это всегда хороший ход), вы должны использовать предложение Шона Патрика Флойда для Apache Commons.


Если вы хотите использовать только ядро ​​Java, вы можете быть заинтересованы в java.text.BreakIterator для создания собственной toTitleCase функции. BreakIterator.getWordInstance() может использоваться для подстроки определенных слов:

Например, «Zach L» будет интерпретироваться как BreakIterator как [«Zach», «», «L»] (скобки используются только для выделения).

В нашей пользовательской функции toTitleCase, которая принимает строку с именем string в качестве параметра, мы могли бы цикл по каждому «слова» с использованием BreakIterator, установить что-то вроде этого:

BreakIterator words = BreakIterator.getWordInstance(); 
string = string.toLowerCase(); 
words.setText(string); 
int start = words.first(); 
for (int end = words.next(); end != BreakIterator.DONE; 
    start = end, end = words.next()) 
{ 

Мы устанавливаем наш параметр, строка, в нижний регистр для простоты позже. Это не должно быть слишком сложно отсюда, чтобы получить подсловы путем подстановки между start и end, загладить слова и объединить или добавить их в возвращаемую строку. (В качестве небольшого дополнительного намека, вы, разумеется, полезно использовать Character.toUpper на персонаже в start).

Опять же, вероятно, много лучше использовать предложение Шона Патрика Флойда. Это просто предлагается в качестве альтернативы.


Для дальнейшего использования, то лучше поставить вашу проблему в тексте вопроса, а не просто как комментарии в коде. В противном случае многие наши первые реакции могут заключаться в том, что вы не задаете реального вопроса.

+0

поблагодарить u за код и спасибо за совет ... я новичок в java-коде ... и я из Индонезии, поэтому мне жаль если мой английский не очень хорошо .... – fortysant

+0

+1 для решения BreakIterator. Еще не использовали этот класс! –

+0

@fortysant: Мы все должны начинать как новички (я все еще в значительной степени новичок сам) в какой-то момент. Удачи вам в Java! –

Смежные вопросы