【问题标题】:How to implement a boolean method that accepts an integer as parameter?如何实现接受整数作为参数的布尔方法?
【发布时间】:2015-01-16 23:55:07
【问题描述】:

我已完成研究,但找不到解决方案。

好的,所以这段代码应该有一个接受整数并根据评估结果返回真或假的方法。主类包含一个循环,该循环生成传递给方法的随机数。然后该方法检查数字是负数还是正数并返回结果。对我来说,一切看起来都很正确。但是由于我的程序不起作用,所以肯定有一些我没有看到的东西。任何建议将不胜感激。

public class isNegative {

    public static void main(String[] args)  {

        int negatives = 0;
        int positives = 0;
        int number = 0;
        boolean result = false;

        for (int i = 0; i < 99; i++)    {
            Random rand = new Random();
            number = rand.nextInt(201)-100;
            result = isNegative(number);
            if (result == false)    {
                positives += 1;
            } else  {
                negatives += 1;
            }
        }
        //boolean status = false;
        System.out.printf("Number of negatives: %i\n", negatives);
        System.out.printf("Number of positives: %i\n", positives);

    }


    public static boolean isNegative(int test)  {
        if (test <= 0)  {
            return true;
        } else  {
            return false;
        }
    }
}

【问题讨论】:

  • 而“不起作用”被定义为...?
  • 当你可以将它移到 for 循环之上并且不会浪费内存时,你到底为什么要创建 99 个随机数
  • 我同意@EpicPandaForce。另外,我强烈建议在调试期间为 Random 使用种子。这样,您可以连续多次执行相同的测试,而不是每次都有不同的输入。
  • 顺便说一句,这是因为 1.) 即使 0 不是负数,您也会返回 isNegative == true,即使 0 不是负数,以及 2.) 因为您应该只使用 System.out.println("Number of negatives: " + negatives); 和 @987654325 @.
  • @EpicPandaForce 是对的。我所做的是 System.out.println("Number ofnegatives:" +negatives);并且完全有效。非常感谢。

标签: java methods boolean


【解决方案1】:

你可以整理你的代码,但它可以做你想做的事情

public class IsNegative {
    public static void main(String... args) {
        int negatives = 0, nonNegatives = 0;
        Random rand = new Random();
        for (int i = 0; i <= 99; i++) {
            int number = rand.nextInt(201)-100;
            if (isNegative(number))
                negatives++;
            else
                nonNegatives++;
        }
        System.out.printf("Number of negatives: %d%n", negatives);
        System.out.printf("Number of non-negatives: %d%n", nonNegatives);
    }

    public static boolean isNegative(int test)  {
        return test < 0;
    }
}

注意:0 不是负数或正数。

顺便说一句:没有%i,很可能您打算将%d 用于十进制。

如果您想了解有关如何使用格式化程序的更多信息,建议您阅读Formatter Javadoc

【讨论】:

    【解决方案2】:

    random.nextInt() 只能生成值 >=0 所以如果你想生成 -100 和 +100,你应该使用这样的东西:

    Random r = new Random();
    
    public int rand(){
        int num=r.nextInt(10000);
        if(num>5000){
            return r.nextInt(100); 
        }else{
            return -r.nextInt(100);
        }
    }
    

    您可以更改和调整获得负数的可能性

    【讨论】:

    • Random.nextInt(int) 只取一个 int 值,不给出负数。
    猜你喜欢
    • 1970-01-01
    • 2016-02-06
    • 2010-09-13
    • 1970-01-01
    • 2011-07-12
    • 2015-09-17
    • 1970-01-01
    • 2019-03-04
    相关资源
    最近更新 更多