2

私は混乱する課題に取り組んでいます。コンソールの Scanner をパラメーターとして受け取り、ユーザーにフルネームを入力するように求め、姓を最初に出力し、次に名を最後に出力する processName() というメソッドを作成する必要があります。たとえば、「Sammy Jankins」と入力すると、「Jankins, Sammy」が返されます。

私の計画は、for ループを使用して文字列を処理し、空のスペースを見つけて、そこから 2 つの新しい文字列を作成することです。1 つは姓名用です。ただし、これが正しい方法であるかどうか、およびこれを正確に行う方法はわかりません。ヒントをいただければ幸いです。

これが私がこれまでに持っているものです:

import java.util.*;

public class Exercise15 {

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

}

public static void processName(Scanner inputScanner) {

    System.out.print("Please enter your full name: ");
    String name = inputScanner.next(); 
    System.out.println();

    int n = name.length();
    String tempFirst;

    for (int i = 0; i <= name.length()-1; i++) {
        // Something that checks the indiviual characters of each string to see of " "exists
        // Somethow split that String into two others.  
        }
    }


}
4

5 に答える 5

1

単に使用しないのはなぜString#splitですか?

私はあなたのためにこれを解決しませんが、ここであなたがすべきこと:

  1. splitスペースに従って。
  2. 配列のサイズが 2 かどうかを確認します。
  3. その場合は、2 番目の要素を出力してから最初の要素を出力します。

ヒント: APIを表示すると、多くの労力と時間を節約できます。

于 2013-09-17T06:05:00.023 に答える
1

なぜ言わないのですか:

String[] parts = name.split("\\s+");
String formattedName = parts[1] + ", " + parts[0];

たとえば、「サマランチ、フアン アントニオ」とフォーマットする必要がある「フアン アントニオ サマランチ」のように、3 つ以上の単語を含む名前をサポートするための演習として残しておきます。

于 2013-09-17T06:06:26.483 に答える
0

StringTokenizerを使用すると、より簡単になります。たとえば、http://www.mkyong.com/java/java-stringtokenizer-example/を参照してください。

于 2013-09-17T06:05:17.053 に答える
0

1.StringTokenizer を使用して文字列を分割します。これは、文字列を分割しようとしているときに非常に役立ちます。

String arr[]=new String[2]; int i=0; StringTokenizer str=new StringTokenizer(StringToBeSplited,"");
while(str.hasMoreTokens()){ 
    arr[i++]=new String(str.nextToken());
}
System.out.println(arr[1]+" "+arr[0]);

それで全部です

于 2013-09-18T17:08:24.150 に答える
0

for ループを次のコードに置き換えることができます。

int spaceIdx = name.indexOf(' '); // or .lastIndexOf(' ')
if (spaceIdx != -1) {
    int nameLength = name.length();
    System.out.println(name.substring(spaceIdx + 1) + ", " + name.substring(0, spaceIdx));
} else {
    // handle incorrect input
}

そのようなインプットも考慮する必要があると思います - ホーマー・J・シンプソン

于 2013-09-17T06:11:56.053 に答える