2017-10-04 7 views
-1
import java.util.Scanner; 

import javax.swing.JOptionPane; 

public class StarWars { 

    public static void main(String[] args) { 
     Scanner reader = new Scanner(System.in); 
     String firstName = ""; 
     String lastName = ""; 
     String maidenName = ""; 
     String town = ""; 

     System.out.print("What is your first name? "); 
     firstName = reader.nextLine(); 
     System.out.print("What is your last name? "); 
     lastName = reader.nextLine(); 
     System.out.print("What is your mothers maiden name? "); 
     maidenName = reader.nextLine(); 
     System.out.print("What town were you born? "); 
     town = reader.nextLine(); 

     String Sfirstname = firstName.substring(0,2); 
     String Slastname = lastName.substring(0,3); 
     String SmaidenName = maidenName.substring(0,2); 
     String Stown = town.substring(0,3); 
     String Star = Sfirstname + Slastname; 
     String War = SmaidenName + Stown; 
     String StarWar = Star + War; 
     System.out.print("Your Star Wars name is: " + StarWar); 
    } 

    public static String StarWar (String Star, String War) { 
     String name; 
     name = Star + " " + War; 
     return War; 
    } 
} 

これは私のプロジェクトに関する私のコードです。私が私のプロジェクトをやっている間、私は戻りメソッドと渡しメソッドに関するいくつかの問題があります。Javaの文字列、メソッドを渡して返しますか?

私が見たいものを印刷するために、メインメソッドを完全に設定しました。

問題は、渡し方と返り方も使い分けなければならないということです。私の先生は、私が渡し/返す方法で2つのことをしたいと思っています。

  1. これらのデータをすべてメソッドに渡すと、メソッドはユーザーにスターウォーズの名前を生成して返す必要があります。
  2. メソッドの戻り値を取得し、それを画面に表示します。

私はこの問題(私が学ぶすべてをするのに5時間かかりましたが間違っています)をどうすればよいか分かりません。

私の先生が実際にやりたいことを誰かに教えてもらえますか?どのようにすればいいですか?

私は本当にあなたからの助けが必要です。

さらに、私がプログラムを実行すると、このようになります。

ファーストネーム?ユーザー入力:アリスの姓?ユーザー入力:スミス母親の旧姓?ユーザー入力:あなたは生まれましたか?ユーザー入力:サクラメント

あなたのスターウォーズの名は次のとおりです。SmiAl MaSac

答えて

0

ここでは改善できる点がいくつかあります。メソッドから始めることができます。メソッド名はコンストラクタのように見え、ロジック自体を実行せず、ロジックの動作を記述し、ロジックをメソッドに移します。

public static String buildStarWarsName(String firstName, String lastName, 
      String maidenName, String town) 
{ 
    return new StringBuilder(lastName.substring(0, 3)) // 
      .append(firstName.substring(0, 2)) // 
      .append(" ") // <-- for the space between first and last 
      .append(maidenName.substring(0, 2)) // 
      .append(town.substring(0, 3)) // 
      .toString(); 
} 

のようなものを一時変数のすべてを(私たちはStringBuilderを使用することができます)必要はありません。そして、あなたはあなたがそれらを読んだとき、あなたの変数を初期化し、最終的に

public static void main(String[] args) { 
    Scanner reader = new Scanner(System.in); 
    System.out.print("What is your first name? "); 
    String firstName = reader.nextLine(); 
    System.out.print("What is your last name? "); 
    String lastName = reader.nextLine(); 
    System.out.print("What is your mothers maiden name? "); 
    String maidenName = reader.nextLine(); 
    System.out.print("What town were you born? "); 
    String town = reader.nextLine(); 

    System.out.print("Your Star Wars name is: " + // 
      buildStarWarsName(firstName, lastName, maidenName, town)); 
} 
+0

wow.Itは完璧に動作します。ありがとうございました! –

0

あなたが代わりに評価するもの返す必要があります:

return name; 

、その後、あなたが値を読みたいときにこの定義されたメソッドを呼び出します。同様のコメントで強調表示


変更:

String StarWar = Star + War; // this would not be required, as handled by your method 'starWarName' 
    System.out.print("Your Star Wars name is: " + starWarName()); // calling the method defined 
} 

public static String starWarName (String Star, String War) { //renamed method to break the similarity with other variables 
    String name; 
    name = Star + " " + War; 
    return name; //returning the complete star war name 
} 
+1

は私が修正、ありがとうメソッドを呼び出すことができますそれ。しかし、別の問題は、StarWarメソッドは2ワードのようにすべきです。しかし私のプログラムは1つの言葉しか作っていません。私はそれをどのように修正するか分からない。 –

0

あなたの方法は、 '戦争' パラメータを返しています。あなたがしようとしていることに基づいて、それは '名前'を返すべきであるように見えます。それがメソッドが構築したものです。

関連する問題