java - For 循环输出不是我想要的

标签 java

我是java新手,正在网上做练习题。我遇到了这个问题,并卡住了很长一段时间。

编写一个名为 diceSum 的类,提示用户输入所需的总和,然后重复掷两个六面骰子,直到它们的总和达到所需的总和。以下是与用户的预期对话:

Desired dice sum: 9
4 and 3 = 7
3 and 5 = 8
5 and 6 = 11
5 and 6 = 11
1 and 5 = 6
6 and 3 = 9

这就是我所做的。

import java.util.Random;
import java.util.Scanner;
public class diceSum{
    public static void main(String[] args){
        System.out.print("Desired dice sum: ");
        Scanner sc=new Scanner(System.in);
        int input=sc.nextInt();

        Random rnd=new Random();
        int r1=rnd.nextInt(7);
        int r2=rnd.nextInt(7);

        int sum=0;
        for(int i=0;i<6;i++){
             sum=r1+r2;
            System.out.println(r1 + "and" + r2 + "=" + sum);

        }

    }
}

我的输出是

Desired dice sum:9
0 and 2=2
0 and 2=2
0 and 2=2
0 and 2=2
0 and 2=2
0 and 2=2

我不明白为什么它会打印 0 和 2 6 次而不给出另一个随机数。我在想我是否应该再创建一些 int r3=rnd.nextInt(7),int r4=rnd.nextInt( 7). 但我认为这会很长,但这是一种可能的方法。

最佳答案

用途:

int r1;
int r2;
for(int i=0;i<6;i++){
     r1=rnd.nextInt(6) + 1;
     r2=rnd.nextInt(6) + 1;
     sum=r1+r2;
     System.out.println(r1 + "and" + r2 + "=" + sum);
     if (sum == input){
         // This will break once you get the value.
         break;
     }
}

继续并获取新的随机数。 还可以使用 rnd.nextInt(6) + 1 来获取 1 - 6(不含 0)。

你的任务是继续检查直到找到为止,而且不仅仅是6次。你应该使用 while 循环来代替。

关于java - For 循环输出不是我想要的,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15322739/

相关文章:

java - 如何绕过 Gradle 4.5 的 SSL 验证?

licensing - 我可以合法分发的最小 Java 运行时?

java - 如何使用 writeString( ) 方法在用户从对话框中输入的名称周围加上引号?

java - 如何捕获 new ClassPathXmlApplicationContext() 的 FileNotFoundException

java - Cytoscape.js - 如何显示 Java 中生成的节点

Java正则表达式匹配模式

java - 如何在 Spring Boot 应用程序中使用 Hibernate Validation 进行 Bean 验证?

java - 使用 Apache Olingo 指定实体类型

java - 如何在 Swing 中显示图像?在文本区域?

java - 同时启动多个线程