Java 如何使我的东西不输出

Java 如何使我的东西不输出,java,if-statement,methods,Java,If Statement,Methods,我制作了3个随机数,并用它们制作了字符串。我不知道为什么我的颜色输出的是nullnullnull,而不是B、R或G的任何顺序。非常感谢您的帮助。我只允许使用方法、随机数、if语句和字符串。 我的代码: 在java中,与C++等其他语言不同,你的颜色值被传递到方法中,而不是引用。这就是为什么在代码中打印颜色时仍然为空;原始变量不被触及 您应该重写方法,使其返回新值。这将与您的代码兼容: String[] colours = randomWholeNumber(); System.out.print

我制作了3个随机数,并用它们制作了字符串。我不知道为什么我的颜色输出的是nullnullnull,而不是B、R或G的任何顺序。非常感谢您的帮助。我只允许使用方法、随机数、if语句和字符串。 我的代码:


在java中,与C++等其他语言不同,你的颜色值被传递到方法中,而不是引用。这就是为什么在代码中打印颜色时仍然为空;原始变量不被触及

您应该重写方法,使其返回新值。这将与您的代码兼容:

String[] colours = randomWholeNumber();
System.out.println(colours[0] + colours[1] + colours[2]);
}
static String[] randomWholeNumber(){

    String colour, colour2, colour3 = null;

    // Same code like before

    // Put the colours into a string array
    return { colour, colour2, colour3 };
}

在java中,参数可以读取(通过值传递),但不能写入。使用函数的结果返回某些内容


请参见示例

Java是按值传递的。这意味着您传入的值可以编辑,但不能替换。由于
String
无法在Java中编辑(不可变),因此您遇到了一个问题

randomWholeNumber(String colour, String colour2, String colour3)
color1
color2
color3
是您的值。如果您使用
color=“B”将这些对象设置为新对象,则传递到该方法的是内存中这些对象的值(地址)的副本例如,将创建一个新对象,并将您在方法中使用的值设置为内存中新对象的值(地址)。这意味着原始对象引用在方法中丢失,并且您正在处理新对象

这意味着,当您从该方法返回时,您将返回原始引用,而没有更改为您更改的引用,其中包含您创建的新引用,并且这些引用在退出该方法时丢失

获得所需行为的步骤

为了让它工作,您需要创建自己的
myclour
类,该类包含三个
字符串。将其传递到方法中,并在其中设置为三个
String
s。这样,您传入的对象的地址就不会丢失,您可以对其进行更改,只要您不在方法中创建并用新地址替换它


另一个选项是从方法返回“R”、“G”或“B”,并通过调用该方法将其分配给字符串。

看起来您发布了不正确的代码。我猜OP遗漏了第一行
public static void main(String[]args)
和最后一个
}
。如果我将颜色设为静态变量会怎么样?如果您没有将颜色传入并从方法中访问它们,这会起作用,但这不是一个好方法。
randomWholeNumber(String colour, String colour2, String colour3)