Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/320.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 返回类型无效/方法替代?_Java_Methods_Void_Return Type - Fatal编程技术网

Java 返回类型无效/方法替代?

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"};

我是一个初学者程序员,不完全理解方法及其功能。我正在尝试制作一个制作石头剪刀的程序,该程序随机选择一个,然后要求用户输入。我遇到的问题是方法。下面是我的代码,我得到的错误是我不能为void方法返回值,但我不知道我还能做些什么使它工作。如有任何建议,将不胜感激

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
的值应该很好,这对于判断游戏应该很有用。我同意您使用in
selectHand()
,它只返回strings.fine,但您需要解决一个事实,即您应该期望在大约每40亿次调用中选择3个有效数组索引。这几乎总是返回null。最好使用
返回列表[random.nextInt(3)]
@AndyTurner保留
x
的值应该很好,这对于判断游戏应该很有用。我同意您在
selectHand()
中使用,它只返回字符串。很好,但您需要解决一个事实,即您应该期望在大约每40亿次调用中选择3个有效数组索引。请注意,3(列表大小)也是无效索引。@MikeCAT:谢谢您的评论。我已经调整了我的答案。请注意3(列表的大小)也是无效的索引。@MikeCAT:谢谢你的评论。我已经调整了我的答案。