JAVA题目-数组3
来源:互联网 发布:淘宝代办工商营业执照 编辑:程序博客网 时间:2024/05/24 05:41
题目
3、编写程序,通过命令行参数给程序传入两个大整数(其中至少有一个整数超过35位),首先对两个数进行显示,计算两数之和与差,输出结果。请注意,输出的结果请务必符合书写习惯。
如:
num1=40300000000000000000000000000000000000000000000
num2=40200000000000000000000000000000000000000000000
或者
num1=4632864832684683568465765487657665765236465244
num2=67
- 数组实现
import java.util.Scanner;public class Three { static void StringToInt(int []num,String s) { for(int i=0;i<s.length();i++) num[i]=Integer.parseInt(s.substring(i,i+1)); } static void Print(int []num) { for(int i:num) System.out.print(i); System.out.println(); } static char sign(int[] num1,int[] num2) { if(num1.length < num2.length) { return '-'; } else if(num1.length == num2.length){ int i=0; while(i<num1.length&&num1[i]==num2[i]) { i++; } if(i<num1.length&&num1[i]<num2[i]) { return '-'; } } return '+'; } static void add(int[] num1,int[] num2) { int len = num1.length>num2.length ? num1.length : num2.length; int []sum=new int[len+1]; // 倒序存储和 int i=num1.length-1,j=num2.length-1; int k=0; int cin=0,temp=0; while(i>=0&&j>=0) { temp=num1[i]+num2[j]+cin; sum[k]=temp%10; cin=temp/10; i--; j--; k++; } while(i>=0&&j<0) { temp=num1[i]+cin; sum[k]=temp%10; cin=temp/10; k++; i--; } while(i<0&&j>=0) { temp=num2[j]+cin; sum[k]=temp%10; cin=temp/10; k++; j--; } if(cin!=0) sum[k]=cin; else k--; System.out.print("num1+num2="); for(int t=k;t>=0;t--) { System.out.print(sum[t]); } } static int[] sub(int[] num1,int[] num2) { int len = num1.length > num2.length ? num1.length : num2.length; int[] sub=new int[len]; int i = num1.length - 1, j = num2.length - 1; int k=0,temp=0; while(j>=0&&i>=0) { temp=num1[i]-num2[j]; if(temp<0) { temp=temp+10; num1[i-1]=num1[i-1]-1; } sub[k]=temp; i--; j--; k++; } while(i>=0&&j<0) { temp=num1[i]; if(temp<0) { temp=temp+10; num1[i-1]=num1[i-1]-1; } sub[k]=temp; i--; k++; } while(k>0&&sub[k-1]==0) { k--; } int n=k; if(k==0) return null; int[] result=new int[n]; for(int t=0;t<n;t++) { result[t]=sub[k-1]; k--; } return result; } public static void main(String[] args) { // TODO Auto-generated method stub Scanner input=new Scanner (System.in); System.out.print("Enter first num:"); String s1=input.next(); System.out.print("Enter second num:"); String s2=input.next(); int []num1=new int[s1.length()]; int[] num2=new int[s2.length()]; StringToInt(num1,s1); StringToInt(num2,s2); System.out.print("num1 = "); Print(num1); System.out.print("num2 = "); Print(num2); int len = num1.length > num2.length ? num1.length : num2.length; add(num1,num2); System.out.println(); int sub[]=new int[len]; char ch =sign(num1,num2); if(ch=='+') { sub=sub(num1,num2); if(sub==null) System.out.print("num1-num2=0"); else { System.out.print("num1-num2="); Print(sub); } } else if(ch=='-'){ sub=sub(num2,num1); System.out.print("num1-num2= -"); Print(sub); } }}
- BigInteger类实现
import java.math.BigInteger;import java.util.Scanner;public class Three { public static void main(String[] args) { // TODO Auto-generated method stub Scanner input=new Scanner(System.in); String s1,s2; s1=input.next(); s2=input.next(); input.close(); BigInteger num1=new BigInteger(s1); BigInteger num2=new BigInteger(s2); System.out.println(""+num1+" - "+num2+" = "+num1.subtract(num2)); System.out.println(""+num1+" + "+num2+" = "+num1.add(num2)); }}
阅读全文
0 0
- JAVA题目-数组3
- JAVA题目-数组1
- JAVA题目-数组2
- java数组排序面试题目
- 数组的旋转java题目
- 剑指offer题目3-二维数组中的查找(JAVA实现)
- Java编程题目-4:数组操作问题
- Java编程题目-11:数组的交集
- 数组 题目
- Java面试题目(3)
- JAVA经典题目3
- java经典题目3
- 题目3:旋转数组的最小数字
- 题目3:二维数组中的查找
- 面试题目3:二维数组中的查找
- 【程序31】 ArrayConverse.java 题目:将一个数组逆序输出。 。
- 上机题目(初级)- 用数组实现记事本(Java)
- java一道关于二维数组的操作的题目
- UVA
- Java编程_水仙花数
- Servlet-request获取客户端ip地址,操作系统,浏览器等信息
- 不能将项目"Resilio Sync.app"移到废纸篓的解决办法
- Relic Discovery
- JAVA题目-数组3
- 用CSS让你的文字更有文艺范
- NSFZOJ #6003. 论战大原题
- 【UnityShader】屏幕空间全息扫描效果
- 网易2018校园招聘编程题
- Java的外部类为什么不能使用private、protected进行修饰
- JDBC
- Java 分布式服务架构
- HDU6212 Zuma(区间dp)