创建随机生成器以对数字进行奇偶对

问题描述 投票:-4回答:1

我真的,真的很困惑。我已经进行过几次网络搜索,但找不到任何可以帮助我解决这一精确作业问题的东西。

涉及:Java,while循环,随机生成数字,以及扫描仪控制台输入。

[我们必须完成main方法中的代码,因此它从控制台获取两个单独的输入并生成许多“ roll”,然后在它们是一对数字(偶数,奇数)时显示结果。

编辑:有人向我指出我的措辞令人困惑。约瑟夫·拉森(Joseph Larson)说得更好:

“您要询问随机数的上限,然后运行多次,对吗?”是的,就是这样。

我有两个主要问题。如果这些问题得到解决,我很确定我可以解决其余问题。

1)我知道我应该做一些事情来完成while循环,但是我尝试过的任何事情都无法获得所需的结果。

2)我认为我错误地声明了randUpBound和奇偶项目,但我无法弄清楚如果我做错了什么。

最奇怪的部分是我的大多数尝试都创建了一个空白的无限循环-什么都没有显示,但是IntelliJ发誓该程序正在运行,并且直到我将其停止后它才会停止。甚至引号中的字符串也不会出现。

下面的预期显示和代码。我将// //粘贴到了我的代码所在的行中,并留在了老师的说明中。

感谢您能提供的任何帮助!

预期显示

输入随机上限? 12

输入要计算的奇偶对数? 2

滚动数:11、2

  1. 发现奇偶对! 11,2

滚动数:1、8

  1. 发现奇偶对! 1,8

滚动数:1、1

总卷数:6

代码

import java.util。*; //添加

公共类OddEvenPairs {公共静态无效main(String [] args){

    //.....[add in missing code here - make declarations and add console input for the random number upper bound,
    // and the number of odd-even pairs to be counted]

    //read two consecutive numbers - fencepost
    Scanner console = new Scanner(System.in); //added
    Random rand = new Random(); //added

    int randUpBound = console.nextInt(); //added
    int oddeven = console.nextInt(); // added
    System.out.println("Enter random upper bound? " + randUpBound); //added
    System.out.println("Enter number of odd even pairs to count? " + oddeven); //added

    int roll1 = rand.nextInt(randUpBound);
    int roll2 = rand.nextInt(randUpBound);
    System.out.println("Numbers  " + roll1 + ", " + roll2);
    int rollcount = 2;

    int oddEvenNum = roll1 + roll2;

    //process the numbers
    while (oddeven < oddEvenNum) {
        oddeven = oddEvenPair(roll1, roll2, oddeven);
        roll1 = rand.nextInt(randUpBound);
        roll2 = rand.nextInt(randUpBound);
        System.out.println("Numbers  " + roll1 + ", " + roll2);
        rollcount += 2;
        //.....[complete missing code here]

    }

}

//method to figure out odd-even pair
public static int oddEvenPair(int roll1, int roll2, int oddeven) {
    //boolean oddEvenFound = false;
    if (roll1 % 2 == 1) {

        if (roll2 % 2 == 0) {
            //oddEvenFound = true;
            oddeven++;
            System.out.println("Odd even " + oddeven);
            System.out.println("Odd+even pair found!" + roll1 + "," + roll2);
        }
    }
    return oddeven;

}

}

java random while-loop console-input
1个回答
0
投票

好的,您的代码存在一些问题。首先,这:

int randUpBound = console.nextInt(); //added
int oddeven = console.nextInt(); // added
System.out.println("Enter random upper bound? " + randUpBound); //added
System.out.println("Enter number of odd even pairs to count? " + oddeven); //added

这些将按顺序进行,这意味着您将接受来自控制台的输入,然后提示用户。这会令人困惑。

[接下来,我将奇数的变量名更改为“ numberOfTries”之类的名称。 Oddeven并没有真正解释它的真正意义。

一旦有了这两个数字,就需要一个循环。

for (int thisTry = 1; thisTry <= numberOfTries; ++thisTry) {
    ...
}

这将使您的代码运行适当的次数。

在该循环内,您将生成两个随机数,然后调用您的oddEvenPair方法。然后只需打印出结果即可。

您的功能真的很奇怪,可能无法满足您的要求。

这里是东西。您一次想太多就让自己感到困惑。分解。您将如何在纸上做?将它分成小块。你真的有5:

-从用户那里获取数据(带有提示)

-循环正确的次数

-在适当范围内生成两个随机数

-确定奇/偶/偶数之一>

-打印结果

考虑这些术语,然后每一步的代码量就很少了。

© www.soinside.com 2019 - 2024. All rights reserved.