我编写了一个程序,如果数组设置是{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)
提前致谢!
这是一个问题:
"编写一个名为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)