当前位置: 首页 > 知识库问答 >
问题:

关于请求用户在数组中输入任意次数的输入和切换值

沈淇
2023-03-14

我正在尝试编写一个方法ThrowAgain(int[]dice)。我被告知切换骰子[]中的值(骰子只有5个索引),用户要求更改的指定索引中的值(表示哪个die)需要用1到6的随机数交换。

rolldie()是生成这六个数字的函数。注意:除了整数1到6和两个相同的整数以外的任何其他都是无效输入。

Original array dice[]= 6 3 2 5 5
("List which die to throw again: 3 6") 
invalid input!
("List which die to throw again: 3 3")
invalid input!
("List which die to throw again: 3 4") 
output: 6 3 5 3 5
public static void throwAgain(int[] dice){
     Scanner input= new Scanner(System.in);
     System.out.print("List which die to throw again: ");
     String a= new String("");String b= new String("");
     String c= new String("");String d= new String("");
     a= input.next();b= input.next();c= input.next();
     d= input.next();

     if (a.equals("1")||b.equals("1")||c.equals("1")||d.equals("1")){
         dice[0]=rollDie();
     }else if (a.equals("2")||b.equals("2")||c.equals("2")||d.equals("2")){
         dice[1]=rollDie();
     }else if (a.equals("3")||b.equals("3")||c.equals("3")||d.equals("3")){
         dice[2]=rollDie();
     }else if (a.equals("4")||b.equals("4")||c.equals("4")||d.equals("4")){
         dice[3]=rollDie();
     }else if (a.equals("5")||b.equals("5")||c.equals("5")||d.equals("5")){
         dice[4]=rollDie();
     }
}
      while (input.hasNextLine()) {
            String theLine = input.nextLine();
            String[] split = theLine.split(" ");
            /*for (int i = 0; i < split.length; i++) {
                System.out.println(split[i]);
                // Do something with each entry
            }*/
          for(int i=0; i<=split.length-1;i++){
            System.out.print(split[i]);
            if (split[i].equals("1")){
                 dice[0]=rollDie();
             }else if (split[i].equals("2")){
                 dice[1]=rollDie();
             }else if (split[i].equals("3")){
                 dice[2]=rollDie();
             }else if (split[i].equals("4")){
                 dice[3]=rollDie();
             }else if (split[i].equals("5")){
                 dice[4]=rollDie();
             }
          }
        }
        System.out.println(dice);
}

结果与输入相同。我就是搞不清楚它有什么错误。我还想使用for循环来限制最多四次的输入。如果这是个好主意,我不会。我试着那样做,但它总是执行四次。我希望每当用户按回车键时,它就停止,无论他只输入一个输入还是两个输入,或者更多但少于四个。

共有1个答案

柯永福
2023-03-14

不明白为什么这个循环不会运行
检查这个问题,它有你想要的代码格式,以便在一定数量的迭代后结束扫描器。您真正需要的只是一个for循环。一定要正确地构造for循环!如果您想使用扫描仪输入来交换模具位置,我建议使用。split()并使用空格作为分隔符(“”)来分隔输入。因此,当输入“3 4”时,split将生成一个数组[3,4],您可以使用这些数字相应地操作骰子数组。

public static void main(String args[]) {
    Scanner theScanner = new Scanner(System.in);
    System.out.print('List which die to throw again: ');
    while (theScanner.hasNextLine()) {

        String theLine = theScanner.nextLine();
        String[] split = theLine.split(" ");
        for (int i = 0; i < split.length; i++) {
            System.out.println(split[i]);
            // Do something with each entry
        }

        System.out.print("List which die to throw again: ");
    }

}
 类似资料:
  • 我的表(表1)中有一条名为“Jonh Wood Doe Smith”的记录,即使用户键入任何可能的组合,我也想返回它:“John Doe”、“Jonn Wood Smith”等 我实现了一个collumn(全名),它是一个包含所有名称的数组,并打算像这样搜索它: 你知道这是否可能和/或解决这类问题的最佳方法是什么吗?我会使用postgresql,所以专有方法、函数等都不是问题。它不需要与其他数据库

  • 我必须在简单的Java实现一个帖子请求。 我看过下面这个问题: 如何从Java向json RESTful服务发出post请求? 这是示例的一部分 我的问题是:为什么参数写在输出流上?据我所知,输出流是为了收集一个请求的输出,而不是为了制作它。 只是好奇,考虑到我显然不擅长这个。

  • 我希望“请输入一个带有字母S的句子”循环,直到用户输入字母“S”

  • 我创建了以下类,用于输入用户的年龄,然后在控制台中显示适当的信息。 运行此程序时,控制台会询问“请输入您的年龄:”

  • 我试图创建一个基于用户输入的数学学生、科学学生和计算机学生的数组。 所以基本上用户应该选择他们想要添加的学生,然后输入学生详细信息。 下面我添加了我到目前为止的代码: 计算机学生班: 我该怎么做?

  • 我正在尝试用以下规格进行JOLT换班操作,这是不起作用的。不知道我犯了什么错误。在这种情况下需要帮助。输出JSON作为一个对象来代替Array,shift也不能按预期工作。