【问题标题】:What does String.format() do inside the return statement of my code? [closed]String.format() 在我的代码的 return 语句中做了什么? [关闭]
【发布时间】:2023-03-05 11:15:01
【问题描述】:

谁能解释一下返回方法(String.format)是怎么回事?

另外,我想知道最后一个 return 语句中的代码是如何工作的?

import java.util.Map;
import java.util.HashMap;

public class RockPaperScissors {

     public static void main(String []args) {
        String result = RockPaperScissors("paper","rock");
        System.out.println(result);
     }
     
     public static String RockPaperScissors(String player1, String player2) {
        Map<String, String> rules = new HashMap<>();
        rules.put("rock", "scissors");
        rules.put("paper", "rock");
        rules.put("scissors", "paper");
        if (player1.equals(player2)) {
           return "TIE";
        }
        return String.format("Player %d wins", rules.get(player1).equals(player2) ? 1 : 2);
    }
}

我不明白的部分是这样的:

String.format("Player %d wins", rules.get(player1).equals(player2) ? 1 : 2);

它有什么作用,里面的%d是什么意思?

【问题讨论】:

  • “发生了什么”请提出更具体的问题。我们不知道您指的是哪个 return 语句,也不知道什么是具体让您感到困惑。使用edit 选项来澄清您的问题。
  • 哪一部分你不明白? get(s1)? equals(s2)? format("Player %d wins",?
  • 建议你画一个 3x3 的网格,在左边写下“rock”、“paper”和“scissors”给玩家 1,在上面写给玩家 2。对于每个单元格,遵循逻辑并填写返回值。现在您知道代码的作用了。
  • 如果您不了解方法的作用,首先应该咨询its documentation。如果您注意 Parameters 部分,您会注意到一个“格式字符串”链接,该链接指向 full explanation %d 和其他百分比替换。

标签: java format return string-interpolation


【解决方案1】:

如果你说的是最后一个 return 语句:

这称为字符串插值,您可以在此处了解更多信息:Java - Including variables within strings?

但基本上这意味着你会写一个完整的句子,你会在字符串中放置一个标记,例如 %s 或其他,以指示使用 String.format() 格式化后将存在的变量类型。

它允许您避免使用 + 号来分隔字符串和变量。

String aStringVar = "MyString";
int anIntVar = 5;
// Line below is the same as: "A string:" + aStringVar + "; and a number " + anIntVar + ";"
String interpolatedString = String.format("A String: %s; and a number %2d;", aStringVar, anIntVar);
System.out.println(interpolatedString);
// Console result: A String: MyString; and a number 5;

【讨论】:

  • 谢谢,我还有一个问题。它是如何工作的: rules.get(s1).equals(s2) ? 1 : 2 // 我不知道这个返回方法如何与 hashmap 一起工作,并给出正确答案谁将赢得这场比赛
  • @Hubert 基本上该部分获取 s1 并将其与 s2 进行比较。它基本上检查 hashmap 是否与您在代码中编写的匹配。例如,如果 s1 = "paper" 和 s2 = "rock" 那么它将检查您是否在代码中输入了匹配项,例如: rules.put("paper", "rock"); s1 是纸,s2 是摇滚,你确实把这个组合放在了哈希图中。因此,当您使用 get.equals 检查它时,它会返回 true,这意味着 s1(纸张)赢了,而石头输了。那个部分 ?如果 value 为 true,则返回 1,如果 value 为 false,则返回 2。结果:玩家 %d 获胜 = 玩家 1 获胜。 s1 获胜
  • @Hubert,您能否将我的答案标记为最佳答案,并为我的答案投票,以防万一。
猜你喜欢
  • 1970-01-01
  • 2016-01-24
  • 2014-12-22
  • 1970-01-01
  • 2021-08-21
  • 2021-12-10
  • 2013-01-24
  • 1970-01-01
  • 2017-03-17
相关资源
最近更新 更多