3

こんにちは、私はJavaプログラミングが初めてです。ユーザーの名と姓のイニシャルを取得する Java プログラムを作成したいと考えています。私のコードは次のとおりです。

public class MyProgram {
public void start() {
    String name = getNameFromUser();
    char firstNameInitials = getInitials(name);
    char surnameInitials = getInitials(name);
    printInitials(firstNameInitials, surnameInitials);
}
private String getNameFromUser() {
    System.out.print("Please enter your name: ");
    String name = Keyboard.readInput();
    return name;
}
private char getInitials(String name) {
    char firstNameInitials = name.charAt(0);
    int indexOfSpace = name.indexOf(" ");
    char surnameInitials = name.charAt(indexOfSpace + 1);

    return firstNameInitials; surnameInitials;
}

private void printInitials(String firstNameInitials, String surnameInitials){
    System.out.print("your initials are: " + firstNameInitials +". " + surnameInitials +".");
}
}

エラー メッセージが表示されます。意味がわかりません。

Error: not a statement.

エラーは return ステートメントの 18 行目にあるようです。私はそれを修正しようとしましたが、失敗しました。どうすればこれを修正できますか?

4

5 に答える 5

6
return firstNameInitials; surnameInitials;

このように複数の文字を返すことはできません。代わりに char 配列を使用して戻ります

たとえば、次のように返すことができます

private char[] getInitials(String name) {
    char firstNameInitials = name.charAt(0);
    int indexOfSpace = name.indexOf(" ");
    char surnameInitials = name.charAt(indexOfSpace + 1);

    char[] result  = {firstNameInitials, surnameInitials};
    return result;
}

そして、それを次のように呼び出します

char[] a = getInitials(name);
char firstNameInitials = a[0];
char surnameInitials = a[1];
于 2013-06-01T08:36:38.093 に答える
2

一度に返すことができる値は 1 つだけです。複数の値を返すことはできません。

必要な複数の値を保持するクラスを作成します。メソッドで、そのクラスのインスタンスであるオブジェクトを返します。

この方法でも、1 つのオブジェクトが返されます。Java では、オブジェクトが何であれ、複数のオブジェクトを返すことはできません。

public class TestVO {

    private char irstNameInitials;
    private char surnameInitials;
    public char getIrstNameInitials() {
        return irstNameInitials;
    }
    public void setIrstNameInitials(char irstNameInitials) {
        this.irstNameInitials = irstNameInitials;
    }
    public char getSurnameInitials() {
        return surnameInitials;
    }
    public void setSurnameInitials(char surnameInitials) {
        this.surnameInitials = surnameInitials;
    }    
}


private TestVOgetInitials(String name) {
char firstNameInitials = name.charAt(0);
int indexOfSpace = name.indexOf(" ");
char surnameInitials = name.charAt(indexOfSpace + 1);

   TestVO vo = new TestVO();
   vo.setIrstNameInitials(firstNameInitials);
    vo.setSurnameInitials(surnameInitials);

return vo; ;

}

于 2013-06-01T08:36:55.750 に答える
0

これを試してください。あなたはいくつかの単純な間違いを犯しました。

public class Testprg
{
   public void start()
   {
    String name = getNameFromUser();
    char firstNameInitials = getFirstNameInitials(name);
    char surnameInitials = getSurNameInitials(name);
    printInitials(firstNameInitials, surnameInitials);
   }

   private String getNameFromUser()
   {
    System.out.print("Please enter your name: ");
    String name = Keyboard.readInput();
    return name;
   }

   private char getFirstNameInitials(String name)
   {
    char firstNameInitials = name.charAt(0);

    return firstNameInitials;
   }

   private char getSurNameInitials(String name)
   {
    int indexOfSpace = name.indexOf(" ");
    char surnameInitials = name.charAt(indexOfSpace + 1);

    return surnameInitials;
   }

   private void printInitials(char firstNameInitials, char surnameInitials)
   {
    System.out.print("your initials are: " + firstNameInitials + ". " + surnameInitials + ".");
   }
}
于 2013-06-01T09:19:58.293 に答える
0

エラー:

return firstNameInitials; surnameInitials;

値を 1 つだけ返します。

 printInitials(firstNameInitials, surnameInitials);

関数を変換して char をパラメーターとして受け取るか、引数を文字列に変更します。

于 2013-06-01T08:40:52.297 に答える
-1
public class ShowCurrentTime
{
    public static void main (String [] args)
    {
        //obtain the total milliseconds since Midnight, Sept 1, 2016
        long totalMilliseconds - System.currentTimeMillis();

        //total seconds
        long totalSeconds = totalMilliseconds / 1000;

        long currentSeconds = (int) (totalSeconds) % 60;

        //obtain total minutes
        long totalMinutes = totalSeconds / 60;

        //obtain current minute
        long currentMinute = (int) (totalMinutes) % 60;

        long toalHours = totalMinute / 60;

        long currentHour = (int) (totalHours % 24);

        System.out.println ("Current time is " + currenHour + ":" 
                                + currentMinute + " " + " " + currentSeconds 
                                + "GMT");
    }
}
于 2016-10-01T22:53:00.190 に答える