java实现函数不同位置上值的返回
编写具有如下原型的函数:int f(unsigned long x, int n, int& Lxn);
它负责将整数x的第n位(从左边数第n位,n>0)的数值放到引用Lxn之中(将作为结果返回到主调函数的对应实参变量中),并将倒数第n位(从右边数第n位,n>0)的数值作为函数结果返回去。并编制主函数对它进行调用以验证其正确性。
例如,当x=123456789,n=7时,执行语句“Rxn=f(x, n, Lxn);”将使返回的Lxn为7,并使Rxn变为3;而执行语句“Rxn=f(12345, 6, Lxn);”将使Lxn与Rxn都变为为0(超出数的“长度”即总位数时返回0)。
5.2概要设计:
本程设计思路: 总的来说并不难。关键就在于返回第几位的数值时的算法。使用调用来处理。当要计算的位数大于所输入数字的位数时就返回两个0。其它的话就求出所要返回的那一位的值,和该位数所在的倒数位数。出错的处理则是交给java中的try,catch语句。
程序流程图(如左图):
5.3 详细设计与编码:
见上传程序。
5.4 调试分析:
在调试过程中基本是没有遇到什么大的问题,倒是在检测错误的时候对于若是输入负数的话响应的出错显示不能成功。不知道是为什么,分明是有用了catch若输入是负数的语句,按顺序的话应该是能监测到的,但结果就是与想的大相径庭。
程序执行的结果:
错误检测:
5.5 用户使用说明:
用户根据程序的提示输入所要进行计算的数字,以及想要计算的位数,程序就会自己计算出所需的得数。如果有错误的话,程序会提出警示。
5.6 设计心得:
对于这次的实验感触最大的就是不能想当然的就以自己的想法来。分明是正确的语句然而由于各种各样的原因可能结果就是会与自己所希望的不太一样。像是这次的负数监测的方法,我问同学也是觉得没有问题,但就是监测不了,很无语,无奈我就只能自己加上用if语句来实现对负数的监测。
/*
编写具有如下原型的函数:int f(unsigned long x, int n, int& Lxn);
它负责将整数x的第n位(从左边数第n位,n>0)
的数值放到引用Lxn之中(将作为结果返回到主调函数的对应实参变量中),
并将倒数第n位(从右边数第n位,n>0)的数值作为函数结果返回去。
并编制主函数对它进行调用以验证其正确性。
例如,当x=123456789,n=7时,执行语句“Rxn=f(x, n, Lxn);”
将使返回的Lxn为7,并使Rxn变为3;而执行语句“Rxn=f(12345, 6, Lxn);”
将使Lxn与Rxn都变为为0(超出数的“长度”即总位数时返回0)。
*/
import java.io.*;
public class shisan {
static int f(int x,int n,int Lxn,int len){
if(n>len){ //当所要计算的位数超过整数的位数时都返回0
Lxn=0;
System.out.println("Lxn:"+Lxn);
return 0;
}
else{ //满足条件时做的处理
Lxn=(int) ((x/Math.pow(10, len-n))%10);//将x除去10的(len-n)次方再余除10,就能得到该位的值
System.out.println("Lxn:"+Lxn);
return len-n+1; //返回位数
}
}
public static void main(String args[])throws IOException{
try{
int Lxn=0;
原文请找腾讯752018766优,文-论'文.网
http://www.youerw.com int x=Integer.parseInt(m);
System.out.print("输入要计算的位数:");
System.out.flush();
int n=Integer.parseInt(br.readLine());
if(n<=0){ //如果要计算的位数小于0,则出错
System.out.println("输入的数值出错!");
}
else{ //满足条件时进行调用处理
int Rxn=f(x, n, Lxn,len);
System.out.println("Rxn:"+Rxn);
}
}
catch(NumberFormatException e){
System.out.println("出错!!输入数应该为数字");
}
catch(NegativeArraySizeException e){
System.out.println("出错!!输入数应该为正数");1837
java实现函数不同位置上值的返回下载如图片无法显示或论文不完整,请联系qq752018766