有些难度的java编程题

来源:百度知道 编辑:UC知道 时间:2024/06/16 23:08:35
编写一个java程序:读取两个整数(每个最多只能是30个数位以内的数),然后在屏幕上详细输出两个数相加的结果。举个例子,假如第一个输入的数字是39983928349458,第二个输入的数字是92387486729, 那么输出结果就是:
39,983,928,349,458+

92,387,486,729

--------------------

40,076,315,836,187

注释:此题需要把整个程序分成多个程式来做。

另:输入的数字不要带有逗号,但是输出的数字要写出带有逗号的那种格式。读取数字的时候不要读取那么大的数,而是应该以array的形式读取竖直然后计算。如果运用的方法得当,这个程序应该不难。创建一个程式,把三个数位的数字加起来,然后回到数字之和里面最不重要的数位。再创建一个类似的程式,目的是回到进位的数位。

附加题(如能做出,我就再给作者追加高分):
输入要求和上题一样,但是这次要求计算两个数的乘积。例如还是刚才那两个数,输出的形式是这样的:
39,983,928,349,458*

92,387,486,729

---------------------------------

?,???,???,???,???,???,???,???,???
懒得算是多少了,????代表上题输出结果。

///: Filename: C.java
//解决办法很多,这里是一个比较常用的方法,要处理更大的数据就要有别的方法了
import java.text.NumberFormat;
public class C {
private long o1,o2;
private NumberFormat nf;
public C(){
nf = NumberFormat.getInstance(java.util.Locale.US);
}
//初始化操作数
public void setO(String v,int id){
long l = 0;
try{l=Long.parseLong(v.replaceAll("\\D",""));}catch(Exception e){}
if(id==1)
o1=l;
else
o2=l;
}
//进行加操作
public String getPlusResult(){
return this.getFormattedNumber(o1+o2);
}
//进行乘操作
public String getMultResult(){
return this.getFormattedNumber(o1*o2);
}
//格式化数字
private String getFormattedNumber(long l){
return nf.format(l);
}
//过程打印
public void printSomething(int id){
//id==1时进行加操作,否则进行乘操作。
System.out.println(o1+" "+(id==1?"+":"*"));
System.out.println