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