获取数字数组中的最大数字

时间:2014-03-11 15:10:28

标签: java

这是我第一次做java,我正在尝试使用名为bigNum()的方法从x数组中获取最大数字。谁能告诉我为什么这不起作用?

class project3
{
    public static void main(String args[])
    {
        int total =0;
        int b;

        System.out.println("How many numbers do you want in the array");
        int maxItems = EasyIn.getInt();
        int[] numbers = new int[maxItems];
        for (int i=0; i < maxItems; i++)
        {
            b = EasyIn.getInt();
        }
        bigNum(b);
    }

    public static void bigNum(int maxItems)
    {
        for (int i = 1; i >= maxItems; i++)
        {
            if (bigNum(b) >= maxItems)
                bigNum(b) = maxItems;
        }
        return bigNum(b);
    }
}

2 个答案:

答案 0 :(得分:1)

由于无法匹配,您可能会在此时收到编译器错误。您希望程序具有匹配的大括号,并且您还希望避免在其他方法中使用方法。

您希望拥有以下形式的内容

class project3
{
    public static void main(String args[])
    {
        ...
    }

    public static int bigNum(int maxItems[])
    {
        ...
        return someInt;
    }   
}

答案 1 :(得分:0)

// capital letter for the class (convention)
public class Project3 {
    public static void main(String args[]) {
        //int total = 0; // you never used this number

        System.out.println("How many numbers do you want in the array");
        int maxItems  = EasyIn.getInt();
        int[] numbers = new int[maxItems];

        for(int i = 0; i < maxItems; ++i) {
            int newNumber = EasyIn.getInt();
            /* you want to put the numbers into an array, 
               so don't call "bigNum" but put them there: */
            numbers[i] = newNumber;
        }
        // now find the big number:
        int bigNumber = bigNum(numbers);
        System.out.println("The biggest number: " + bigNumber);
    }

    // first:  change the return type to get the biggest number
    // second: pass the reference to the array, not a single number
    // public static void bigNum(int maxItems) {
    public static int bigNum(int[] items) {
        // create big number, assume it's very small:
        int bigNumber = Integer.MIN_VALUE;

        // this for loop will never run, change it a bit:
        //for(int i = 1; i >= maxItems; i++) {
        for(int i = 0; i < items.length; i++) {
            // your idea is correct, but you can not use the 
            // method here, see explanations below
            // Also don't check for the number of Items, but for
            if(items[i] > bigNumber) {
                bigNumber = items[i];
            }
        }

        return bigNumber;
    }
}

解释和进一步阅读

类名:Java有许多不同的命名约定,但最常见的规则是:CamelCase中的ClassNames / Types,开头有一个Capital,variableNames遵循类似的约定,但带有一个前导小写字母。这使得阅读代码变得更加容易。

缩进:尝试使用更一致的缩进。还支持可读性。实际上其他一些编程语言甚至依赖于正确的缩进。

尝试了解variables是什么以及有哪些方法以及如何use them(和return from them,您无法为Java中的方法赋值。当您阅读后一篇教程重点时关于返回类型以及如何正确调用方法,当方法类型为int时,您不能返回void。此外,参数需要精确定义。

除此之外,尝试在发布之前编译代码。随着你的代码的进行,它应该抛出大量的编译错误,例如: bigNum(b) = maxItems;应告诉您,作业的左侧需要是变量。这可以帮助您追踪错误。

另一个错误是,对于大多数人EasyIn将不会被定义(因为它对我来说,所以我上面发布的代码可能实际上不起作用,我没有尝试)。我想这是一个学习库(我们在我们的第一次Java讲座中得到了AlgoTools)。仍然很高兴告诉我们它是什么以及你使用的其他导入(当我让我的IDE决定我的导入时常见错误:java.util.Datejava.sql.Date)。

还要尝试向自己说明您希望通过自己的计划以及如何实现目标。你的算法看起来实际上看起来你没有太多考虑它:你试图找到一个最大的数字,并总是检查“一个大数字”与预期项目的数量,然后也可能成为“大数字”。或类似的东西。

编程简洁而准确,因此请先制定计划。如果您太难以直接考虑解决方案,您可以将其绘制在纸上。

如果你有问题,在编译之后,询问你的程序,询问谷歌,询问堆栈溢出:向我们提供尽可能多的详细信息,我们将能够帮助你而不只是发布一些代码。

祝你好运!