buildingjavaprograms参数之谜

时间:2014-11-27 15:53:24

标签: java

我遇到这个困难:

public class MisterySoda {
public static void main(String[] args) {
    String soda = "coke";
    String pop = "pepsi";
    String coke = "pop";
    String pepsi = "soda";
    String say = pop;

    carbonated(soda, pop, pepsi);        // say pepsi not soda or coke
    carbonated(coke, soda, pop);         // 
    carbonated(pop, pepsi, pepsi);       // 
    carbonated("pop", pop, "koolaid");   // 
    carbonated(say, "say", pop);         // 
}
public static void carbonated(String coke, String soda, String pop) {
    System.out.println("say " + soda + " not " + pop + " or " + coke);
} }

当我编译时,我得到以下输出:

say pepsi not soda or coke
say coke not pepsi or pop
say soda not soda or pepsi
say pepsi not koolaid or pop
say say not pepsi or pepsi

有人可以解释carbonated()如何使用相关字符串来提供输出吗?有没有人可以澄清这个?

4 个答案:

答案 0 :(得分:0)

soda变量实际上是coke方法中的carbonated,请参阅此插图:

carbonated(      soda,          pop,      pepsi)
                   ↓             ↓           ↓
carbonated(String coke, String soda, String pop)
  • 第一个参数coke将打印在句子的 last
  • 第二个参数soda将在句子的第一个句子中打印
  • 最后参数pop将在中间连接

请记住,重要的是订单,而不是变量名称

答案 1 :(得分:0)

变量名称令人困惑。与下面的程序比较,名称是"中立"。现在应该有意义。

public class MisterySoda {
public static void main(String[] args) {
    String a = "coke";
    String b = "pepsi";
    String c = "pop";
    String d = "soda";
    String e = b;

    carbonated(a, b, d);
    carbonated(c, a, b);
    carbonated(b, d, d);
    carbonated("pop", b, "koolaid");
    carbonated(e, "say", b);
}
public static void carbonated(String x, String y, String z) {
    System.out.println("say " + y + " not " + z + " or " + x);
} }

答案 2 :(得分:0)

由于您的命名惯例,您变得困惑。如果你清理你的名字,这将使这更容易:

public class MisterySoda {
public static void main(String[] args) {
    String soda = "soda";
    String pop = "pop";
    String coke = "coke";
    String pepsi = "pepsi";
    String say = pop;

    carbonated(soda, pop, pepsi);        // say pepsi not soda or coke
    carbonated(coke, soda, pop);         // 
    carbonated(pop, pepsi, pepsi);       // 
    carbonated("pop", pop, "koolaid");   // 
    carbonated(say, "say", pop);         // 
}
public static void carbonated(String str1, String str2, String str3) {
     System.out.println("say " + str1 + " not " + str2 + " or " + str3);
} }

现在输出会更直观:

say soda not pop or pepsi
say coke not soda or pop
say pop not pepsi or pepsi
say pop not pop or koolaid
say pop not say or pop

参数传递到carbonated()的顺序是重要的,而不是函数carbonated()的本地变量名。

答案 3 :(得分:0)

你的职能:

public static void carbonated(String coke, String soda, String pop) {
System.out.println("say " + soda + " not " + pop + " or " + coke);
}

以简单的形式出现

public static void function(String string1, String string2, String string3){
System.out.println("say " + string2 + " not " + string3 + " or " + string1);}

因此,当您调用该函数时,您实际上是将预定义的字符串写入string1,string2和string3。

好的做法是在函数中使用有用的变量来避免在调用函数时出现混淆。

相关问题