JAVA程序修改

来源:百度知道 编辑:UC知道 时间:2024/07/08 04:29:21
import java.util.Scanner;

public class Maina {
public static int gcd(int x, int y)
{int m=x,n=y;
while (true)
{
if ((m = m % n) == 0)
return x*y/n;
if ((n = n % m) == 0)
return x*y/m;
}
}

public static void main(String args[])
{
int i,c,j;
Scanner cin = new Scanner(System.in);
int a = cin.nextInt();
int x[]=new int[101];
for(i=0;i<=100;i++);
x[i]=a+i;
c=gcd(x[0],x[1]);
for(j=2;j<=100;j++);
c=gcd(c,x[j]);
System.out.println("最小公倍数:" + c);
}
}这个是我写的,求一个数到加100这101个数的最小公倍数,可是运行会出现Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 101
at Maina.main(Maina.java:22)麻烦修改,谢谢!

看你给的分高,花了我20分钟写这个!int能表示的数绝对达不到你的要求,因此要用BigInteger,而这个类我也不熟,只好查API喽!以下代码绝对正确,而且很简单,不明白的HI上和我交流!
import java.math.BigInteger;
import java.util.Scanner;

public class Maina {

public static void main(String args[]) throws Exception {
BigInteger c;
Scanner cin = new Scanner(System.in);
BigInteger a = cin.nextBigInteger();
BigInteger x[] = new BigInteger[101];
x[0] = new BigInteger(a.toString());
for (int i = 1; i <= 100; i++){
x[i] = new BigInteger(a.add(BigInteger.valueOf(i)).toString());
}
c = x[0].multiply(x[1]).divide(x[0].gcd(x[1]));
for (int j = 2; j <=100; j++){
c = c.multiply(x[j]).divide(c.gcd(x[j]));
}
System.out.println("最小公倍数:" + c);
}
}
你干嘛发两遍啊?

for(i=0;i<=100;i++);
x[i]=a+i;
改成:
for(i=0;i<=100;i++)
x[i]=a+i;

首先,你错误的地方呢,就是你的for循环没有做好,for()后处理一个简单语句或一个复合语句。简单语句以“;”结尾,复合语句就是在括号内的语句集合了。你的for循环