Java 返回类型无效/方法替代?
我是一个初学者程序员,不完全理解方法及其功能。我正在尝试制作一个制作石头剪刀的程序,该程序随机选择一个,然后要求用户输入。我遇到的问题是方法。下面是我的代码,我得到的错误是我不能为void方法返回值,但我不知道我还能做些什么使它工作。如有任何建议,将不胜感激Java 返回类型无效/方法替代?,java,methods,void,return-type,Java,Methods,Void,Return Type,我是一个初学者程序员,不完全理解方法及其功能。我正在尝试制作一个制作石头剪刀的程序,该程序随机选择一个,然后要求用户输入。我遇到的问题是方法。下面是我的代码,我得到的错误是我不能为void方法返回值,但我不知道我还能做些什么使它工作。如有任何建议,将不胜感激 public class RPS { public static void main (String[] args) { String[] list = {"rock", "paper", "scissors"};
public class RPS {
public static void main (String[] args) {
String[] list = {"rock", "paper", "scissors"};
Random rand = new Random();
int x = rand.nextInt();
switch (x) {
case 0: return list[0];
case 1: return list[1];
case 2: return list[2];
}
return
用于从使用return
的方法返回
在本例中,我猜您希望将所选值存储到某个位置,然后以相同的方法使用它
试试这个:
import java.util.Random;
public class RPS {
public static void main (String[] args) {
String[] list = {"rock", "paper", "scissors"};
Random rand = new Random();
int x = rand.nextInt();
String hand = null;
if (0 <= x && x <= 2) hand = list[x];
// do something using hand
System.out.println(hand);
}
}
return
用于从使用return
的方法返回
在本例中,我猜您希望将所选值存储到某个位置,然后以相同的方法使用它
试试这个:
import java.util.Random;
public class RPS {
public static void main (String[] args) {
String[] list = {"rock", "paper", "scissors"};
Random rand = new Random();
int x = rand.nextInt();
String hand = null;
if (0 <= x && x <= 2) hand = list[x];
// do something using hand
System.out.println(hand);
}
}
你可以试试这个:
public class RPS {
public static void main (String[] args) {
String[] list = {"rock", "paper", "scissors"};
Random rand = new Random();
int x = rand.nextInt();
System.out.println( list[x%list.length] );
}
关于您的问题:rand.nextInt()
很可能返回大于3(=数组大小)的值。请注意,对于长度数组,只有0、1、…、n-1是有效索引。您可以尝试以下方法:
public class RPS {
public static void main (String[] args) {
String[] list = {"rock", "paper", "scissors"};
Random rand = new Random();
int x = rand.nextInt();
System.out.println( list[x%list.length] );
}
关于您的问题:
rand.nextInt()
很可能返回大于3(=数组大小)的值。请注意,对于长度数组,只有0,1,…,n-1是有效的索引。为什么您认为返回某个内容可以解决问题?问问自己:你想做什么?您希望在数组中随机选择一个元素。你为什么认为退货能解决你的问题呢?问问自己:你想做什么?您希望在数组中随机选择一个元素。所以搜索它。它几乎总是返回null。最好使用返回列表[random.nextInt(3)]
@AndyTurner保留x
的值应该很好,这对于判断游戏应该很有用。我同意您使用inselectHand()
,它只返回strings.fine,但您需要解决一个事实,即您应该期望在大约每40亿次调用中选择3个有效数组索引。这几乎总是返回null。最好使用返回列表[random.nextInt(3)]
@AndyTurner保留x
的值应该很好,这对于判断游戏应该很有用。我同意您在selectHand()
中使用,它只返回字符串。很好,但您需要解决一个事实,即您应该期望在大约每40亿次调用中选择3个有效数组索引。请注意,3(列表大小)也是无效索引。@MikeCAT:谢谢您的评论。我已经调整了我的答案。请注意3(列表的大小)也是无效的索引。@MikeCAT:谢谢你的评论。我已经调整了我的答案。