【问题标题】:Java how to pass and return string, method?Java如何传递和返回字符串,方法?
【发布时间】:2018-03-15 07:59:53
【问题描述】:
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;
    }
}

这是关于我的项目的代码。在我做项目时,我对返回方法和传递方法有一些问题。

我完美地设置了 main 方法来打印出我想看到的东西。

问题是我还必须使用传递方法和返回方法。我的老师希望我用传递/返回方法做两件事。

  1. 将所有这些数据传递给您的方法,该方法应生成并返回用户 Star Wars 名称。
  2. 获取方法的返回值,并显示到屏幕上。

我不知道该如何解决这个问题(我花了 5 小时完成所有我学到的东西,但是错了..)。

有人可以给我一个提示或教我我的老师究竟想让我做什么以及我该怎么做?

我真的需要你们的帮助。

另外,如果我运行一个程序,它应该是这样的。

名字?用户输入:Alice 姓氏?用户输入:史密斯妈妈的娘家姓?用户输入:你出生在马塔镇吗?用户输入:萨克拉门托

你的星球大战名字是:SmiAl MaSac

【问题讨论】:

    标签: java string methods return


    【解决方案1】:

    这里有一些我们可以改进的地方,让我们从方法开始 - 方法名称看起来像一个构造函数并且不执行逻辑本身,让我们描述它的作用并将逻辑移动到方法中 - 我们不'不需要所有这些临时变量(我们可以使用StringBuilder),比如

    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();
    }
    

    然后你可以在读取变量时初始化它们,最后调用方法

    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));
    }
    

    【讨论】:

      【解决方案2】:

      您的方法正在返回“war”参数。根据您的尝试,它看起来应该返回“名称”。这就是方法构建的内容。

      【讨论】:

        【解决方案3】:

        您应该返回您评估的内容:

        return name;
        

        然后在你想读取值时调用这个定义的方法。


        cmets 中突出显示的更改:

           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
        }
        

        【讨论】:

        • 谢谢,我解决了。但是,另一个问题是 StarWar 方法应该像 2 个单词。但是我的程序只说一个字。我不确定如何解决这个问题。
        猜你喜欢
        • 1970-01-01
        • 2016-05-19
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-01-22
        • 2015-03-15
        • 2011-07-09
        • 2019-03-31
        相关资源
        最近更新 更多