努力跟着你这位大神的思路,终于看清了;
站在用户的角度思考问题,与客户深入沟通,找到涧西网站设计与涧西网站推广的解决方案,凭借多年的经验,让设计与互联网技术结合,创造个性化、用户体验好的作品,建站类型包括:成都做网站、网站建设、企业官网、英文网站、手机端网站、网站推广、空间域名、网络空间、企业邮箱。业务覆盖涧西地区。
先抛开Scanner和while 循环。
for循环里面
iter.subtract(BigInteger.ONE) 表示 iter=iter-1 造成死循环
bInt[iter.intValue()],10000的时候数组越界。
错误是因为你的HugeInteger类里需要定义好多方法,但是你的HugeInteger类中都没有,我把你用到的这些方法的类型与作用说出来,你自己在HugeInteger类里面写。
1、void parse(String a) 把String a转换为HugeInteger
2、String toString() 返回HugeInteger的字符串表达形式
3、void add(HugeInteger other) 把other加到当前HugeInteger对象上
4、void substract(HugeInteger other) 用当前对象减去other
5、boolean isZero() 判断当前对象是否为0
6、boolean isNotEqualTo(HugeInteger other) 判断当前对象与other是否相等
7、boolean isGreaterThan(HugeInteger other) 判断当前对象是否比other大
8、boolean isLessThan(HugeInteger other) 判断当前对象是否比other小
9、boolean isGreaterThanOrEqualTo(HugeInteger other) 判断当前对象是否大于等于other
10、boolean isLessThanOrEqualTo(HugeInteger other) 判断当前对象是否小于等于other
看这个:
1/** *//**
2 * 大整数项乘
3 * @author Administrator
4 *
5 */
6import java.io.BufferedReader;
7import java.io.InputStreamReader;
8import java.io.IOException;
9import java.math.*;
10public class Test1 {
11 public static void main(String[] args){
12 Test1 t1=new Test1();
13
14 long x,y;
15
16 System.out.println("Input x ");
17 x=t1.getNumFromConsole();
18 System.out.println("Input y ");
19 y=t1.getNumFromConsole();
20 System.out.println(t1.mult(x,y,num(x)));
21 }
22 public long getNumFromConsole(){
23 String str=null;
24 BufferedReader br=new BufferedReader(new InputStreamReader(System.in));
25 try{
26 str=br.readLine();
27 }catch(IOException ioe){
28 System.out.println(ioe.getMessage());
29 }
30 return Long.parseLong(str);
31 }
32 public long mult(long x,long y,int n){
33 long a,b,c,d,s;
34 int e;
35 if(n==1)
36 return x*y;
37 else{
38 a=(long)(x/Math.pow(10,n/2));//取x左半部分
39 b=(long)(x%Math.pow(10,n/2));//取x的又半部分
40 c=(long)(y/Math.pow(10,n/2));//取y的左半部分
41 d=(long)(y%Math.pow(10,n/2));
42 e=num(a);
43 s=(long)(mult(a,c,e)*Math.pow(10,n)+(mult((a-b),(d-c),e)+mult(a,c,e)+mult(b,d,e))*Math.pow(10, n/2)+mult(b,d,e));
44 return s;
45 }
46 }
47 //判断输入数字的位数
48 private static int num(long x){
49 int i=0;
50 if(x-9=0)
51 return 1;
52 else{
53 while(x!=0){
54 i++;
55 x=x/10;
56 }
57 return i;
58 }
59 }
60}
61
将大整数存入字符数组,按位相加。 给你写一段伪代码。
String a = "12389839843958394";
String b = "23445655234343";
char ac [] = a.toCharArray();
char bc [] = b.toCharArray();
这里要将数组ac 和bc 倒序排列,因为"123"转换后为{'1','2','3'} 高位在前,倒序是为了低位在前。这部分代码自己实现把。
char longc[];
char shortc[];
if (ac.length=bc.length) {
longc=ac;
shortc=bc;
} else {
longc=bc;
shortc=ac;
}
下面做一个for循环,按位相加乘以10的i次方。就像小学学的列竖式子一样
int sum=0;
for (int i=longc.length;ilongc.length;i++) {
if (ishortc.length) {
sum+=(longc[i]+shortc[i]-96)*Math.pow(10, i);
} else {
sum+=(longc[i]-48)*Math.pow(10, i);
}
}
其中字符相加的时候减48是将char 转换成int
代码如下:
for (int a = 1; a=100; a++)
{
system.out.println(a);
}
/////////
int a =1;
while (a =100)
{
system.out.println(a);
a++;
}
/////////
int a = 1;
do
{
system.out.println(a);
a++;
}
while (a=100)
扩展资料:
在windows下编译java文件、执行:
1、先创建一个txt,更改为test.java。
2、编写代码,为输出为holloword。
3、找到cmd,并进行打开cmd。
4、编译java文件,输入命令为javac test.java。
5、如果没有报错,查看当前目录下是否有class文件产生。
6、执行class文件,在命令输入java test,输出为holloword。
public static void main(String[] args) {
//接收控制台传入的参数,并新建一个数组,用于保存转化为整数类型的变量
int[] temp = new int[args.length];
for (int i = 0; i args.length; i++) {
temp[i] = Integer.parseInt(args[i]);
}
//判断最大值
int max = temp[0];
for (int i = 1; i temp.length; i++) {
if(temp[i]temp[0]){
max =temp[i];
}
}
System.out.println("最大值为:"+max);
}