Java 生成随机数直到总和为1000

Java 生成随机数直到总和为1000,java,arrays,loops,do-while,Java,Arrays,Loops,Do While,我对Java和编程都是新手。我目前正在参加一个面向对象编程的入门课程,在编写代码方面需要一些帮助。我正在写的程序是一个飞镖游戏。我应该随机生成飞镖击中棋盘某个区域的次数,并将其存储到一个数组中。然后在另一个数组中,我必须跟踪分数。分数加起来应该是1000分或更多,但我在这方面有问题。我的程序运行良好,但即使总数低于1000,它也会显示结果。我甚至尝试过使用do-while循环,但似乎没有得到正确的答案。我还需要帮助缩短第18-27行。这是我的代码,非常感谢您的帮助 import java.uti

我对Java和编程都是新手。我目前正在参加一个面向对象编程的入门课程,在编写代码方面需要一些帮助。我正在写的程序是一个飞镖游戏。我应该随机生成飞镖击中棋盘某个区域的次数,并将其存储到一个数组中。然后在另一个数组中,我必须跟踪分数。分数加起来应该是1000分或更多,但我在这方面有问题。我的程序运行良好,但即使总数低于1000,它也会显示结果。我甚至尝试过使用do-while循环,但似乎没有得到正确的答案。我还需要帮助缩短第18-27行。这是我的代码,非常感谢您的帮助

import java.util.Arrays;
import java.util.Random;
public class Assignment3Q1
{
public static void main(String[] args)
{
    Random darts = new Random();
    int [] timesHit = new int [10];
    int sum=0;
    int tosses=0;
    do
    {
        for ( int i = 0; i < timesHit.length; i++)  
        {
            timesHit[i]= 20 + darts.nextInt(20);
        }
        int [] points = new int [10];
        points [0] = timesHit[0]*7;
        points [1] = timesHit[1]*5;
        points [2] = timesHit[2]*5;
        points [3] = timesHit[3]*5;
        points [4] = timesHit[4]*3;
        points [5] = timesHit[5]*3;
        points [6] = timesHit[6]*3;
        points [7] = timesHit[7];
        points [8] = timesHit[8];
        points [9] = timesHit[9];
        for (int i=0; i<timesHit.length; i++)
        {   
            tosses += timesHit[i];
        }
        for (int i=0; i<points.length; i++)
        {
            sum += points[i];
        }
        System.out.println(tosses);
        System.out.println(sum);
        break;
    }while (sum>=1000);
}
导入java.util.array;
导入java.util.Random;
公共类分配3Q1
{
公共静态void main(字符串[]args)
{
随机省道=新随机();
int[]timesHit=新int[10];
整数和=0;
整型投掷=0;
做
{
for(int i=0;i对于(int i=0;i,这里是保持循环直到达到所需结果(sum>=1000)的正确逻辑。还要注意使用
乘法器
数组,以便可以在命中循环中计算点。其他两个和也可以在同一个循环中进行

public class Assignment3Q1 {
   public static void main(String[] args)
    {
        Random darts = new Random();
        int sum=0;
        int tosses=0;
        int multiplier[] = {7, 5, 5, 5, 3, 3, 3, 1, 1, 1};
        do
        {
            int [] timesHit = new int [10];
            int [] points = new int [10];
            tosses = 0;
            sum = 0;
            for ( int i = 0; i < timesHit.length; i++)  
            {
                timesHit[i]= 20 + darts.nextInt(20);
                points[i] = timesHit[i] * multiplier[i];
                tosses += timesHit[i];
                sum += points[i];
            }
        } while (sum<1000);
        System.out.println("Final Tosses="+tosses);
        System.out.println("Final Sum="+sum);
    }

}
公共类分配3q1{
公共静态void main(字符串[]args)
{
随机省道=新随机();
整数和=0;
整型投掷=0;
整数乘法器[]={7,5,5,3,3,1,1,1};
做
{
int[]timesHit=新int[10];
int[]点=新int[10];
投掷=0;
总和=0;
for(int i=0;i}当(Sum你在这些行中做什么?修复这个我没有真正解释过的问题,当你在做的时候,请重写这部分的代码。这也不是这个网站的工作原理。请在你的帖子中清楚地解释你发布的代码存在的问题,并问一个比你能为我修复它更具体的问题。我使用了一个很长时间的method将数组中的元素相乘,并想知道是否有办法将其缩短为for循环。如果在10次点击后,总和小于1000,会发生什么情况?重置所有值并重试?是的,在总和大于等于1000之前不应该打印。这就是我不知道如何处理乘法器数组的原因,即这是解决我的问题的一个很好的方法。但是程序仍然在打印总和,即使它低于1000。运行您的精确代码,并将其作为输出-282 908我测试了该情况,发现它对我很有效(例如,在while循环中打印总和)。我发现循环将继续,直到总数最终达到1000或更大。请您再次检查。为清楚起见,我已更改了打印语句。非常抱歉。我必须运行旧程序。无论如何,非常感谢!