小编use*_*481的帖子

如何检查数组是否为空?

我编写了一个程序,如果数组设置是{1,3,6,7,12},它将返回两个数字之间的最小间隙.换句话说,它将首先找到3和1,6和3,7和6,以及12和7之间的差异.在达到它们的差异之后,它将返回最小的差异,在我们的情况1中,因为6-7 = 1.例如,如果我们给出了一个{60}的数组,程序将返回0.现在,如果我们有一个{}的数组,其中没有任何内容,它也将返回0.但是,我无法让我的程序返回0!它引发了一个例外.我错过了什么?我该如何解决这个问题?到目前为止,这是我的程序:

public static void main(String[] args) {
    int[] numberSet = {1, 3, 6, 7, 12};
    //int[] numberSet = {};
    System.out.println(minGap(numberSet));      
}

public static int minGap(int[] numberSet) {
    int[] differenceArray = new int[numberSet.length-1];
    int smallestNum = 0;
    if (numberSet.length < 2) {
        return 0;
    }
    else {
        for(int i = 0; i < numberSet.length-1; i++) {
            differenceArray[i] = numberSet[i+1] - numberSet[i]; 
        }       
        Arrays.sort(differenceArray);
        smallestNum = differenceArray[0];
        return smallestNum;
    }
}
Run Code Online (Sandbox Code Playgroud)

提前致谢!

java arrays

14
推荐指数
2
解决办法
11万
查看次数

如何编写一个简单的Java程序,找到两个数字之间最大的公约数?

这是一个问题:

"编写一个名为gcd的方法,它接受两个整数作为参数,并返回两个数字的最大公约数.两个整数a和b的最大公约数(GCD)是a和b两者的最大整数.任何数字和1的GCD是1,任何数字的GCD和0都是该数字.

计算两个数字的GCD的一种有效方法是使用Euclid算法,该算法表明以下内容:

GCD(A, B) = GCD(B, A % B) 
GCD(A, 0) = Absolute value of A"
Run Code Online (Sandbox Code Playgroud)

我真的很困惑如何解决这个问题.我只想提供一些提示和提示,告诉我到目前为止我在程序中做错了什么.(我必须放入扫描仪,这是我老师的要求.)不要给我一个完整的代码,因为我有点想自己解决这个问题.也许只是给我一个暗示我如何结合你在上面看到的这个公式.(如果你想知道为什么我输入== 0,那是因为我认为如果你有两个数字,比如0和90,他们的GCD会是0吗?)

此外,我的代码必须包括while循环......如果循环我会更喜欢...

提前致谢!:)

我目前的计划:

public static void main(String[] args) {
        Scanner console = new Scanner(System.in);
        int a = console.nextInt();
        int b = console.nextInt();
        gcd (a, b);
    }

    public static void gcd(int a, int b) {
        System.out.print("Type in two numbers and I will print outs its Greatest Common Divisor: ");
        int gcdNum1 = console.nextInt();
        int gcdNum2 = console.nextInt();
        while (gcdNum1 == 0) { …
Run Code Online (Sandbox Code Playgroud)

java loops while-loop greatest-common-divisor

12
推荐指数
2
解决办法
13万
查看次数