【问题标题】:How do I call a string method twice in Java without repeating the whole method?如何在 Java 中调用字符串方法两次而不重复整个方法?
【发布时间】:2020-10-16 15:04:08
【问题描述】:

我想要做的是通过调用一个函数两次来提示用户输入他们的名字和姓氏。第一次呼叫将针对名字,第二次呼叫将针对姓氏。然后程序将连接并显示“你好,名字姓氏!”我觉得我非常接近正确的结果,但我显然错过了一些东西。新人来了感谢您的所有回复。

import java.util.Scanner;

public class firstLastName2 {
  static String F_NAME;
  static String L_NAME;
  static String name;
  static void firstName(String name) {
    Scanner keyboard = new Scanner(System.in);
    System.out.println("Please enter your first name.");
    F_NAME = keyboard.nextLine();
    System.out.println("Please enter your last name.");
    L_NAME = keyboard.nextLine();
  }
  public static void main(String[] args) {
    firstName(name);
    System.out.println("Hello, " + F_NAME + " " + L_NAME + "!");
  }
}

【问题讨论】:

  • 您现在面临什么问题?您当前的代码没有显示您正在尝试做什么。
  • 不清楚你想要什么。您的代码对我来说有正确的输出。
  • 我试图调用该函数两次,第一次为用户的名字传递一个提示字符串,然后是第二次调用,它为用户的姓氏传递一个提示字符串。
  • 为什么需要调用两次函数?方法 firstName(名字很糟糕 - 应该称为 getNames)可以满足您的需要。
  • 我把它改成了 getNames。谢谢你的反馈。我意识到它可以满足我的需要,但是我正在学习的课程在问题陈述中要求这样做。我尝试了不同的方法来调用两次,但没有重复整个函数。

标签: java function methods


【解决方案1】:

如果您想调用一个函数两次,那么我建议该函数返回用户输入并接收问题文本。您的代码似乎是正确的。

import java.util.Scanner;

public class firstLastName2 {
  static Scanner keyboard = new Scanner(System.in);

  static String getUserInput(String question) {
    System.out.println(question);
    return keyboard.nextLine();
  }

  public static void main(String[] args) {
    String name = getUserInput("Please enter your first name.");
    String sunrName = getUserInput("Please enter your last name.");
    System.out.println(String.format("Hello, %s %s!", name , surName));
  }
}

【讨论】:

  • 我认为为此目的编写一个方法似乎有些矫枉过正。当 OP 以这种方式设计时,从类中删除属性也是一个坏主意。
  • 我知道,但我只是想通过对原始代码的最小修改来回答这个问题。正如您所说,在类方法中进行阻塞调用不是一个好主意。我不同意您对删除类方法的看法,因为这在并发场景中可能是一个好主意,就好像您有机会同时从不同线程从同一 VM 进行调用,访问静态类成员可以同步以避免运行时出现意外行为
  • remove property from class 其实我说的不是静态字段,而是创建一个类的实例,然后做你想做的事。
猜你喜欢
  • 1970-01-01
  • 2020-01-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-04-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多