抱歉 本来计划的13号完成的作业拖了这么久 本来计划用c# 最近在搞java就用java写了
第一版本程序Prog1:
+ 给定一个数组,实现数组元素求和;,具体要求:实现对一维数组(a[100])的所有元素相加运算。
+ 数据准备:a)数组长度:100;b)数组数据来源:实验数据A列:1~100.
第一版本程序Prog1: public class CopyOfArray { public static double sum=0; public static double[] Darray=new double[100]; public static void main(String[] Sarry) { try { String buf=null; BufferedReader in=new BufferedReader(new FileReader("C:/Users/狸猫/Array/src/Array/数组表.csv") ); int count=100; for(int i=0;i<count;i++) { buf=in.readLine(); String[] temp=buf.split(","); Darray[i]=Double.parseDouble(temp[0]); } for(int i=0;i<100;i++) { sum=sum+Darray[i]; } in.close(); System.out.println("sum="+sum); } catch(FileNotFoundException e) { e.printStackTrace(); } catch(IOException e) {
e.printStackTrace(); } catch(Exception e)
{ e.printStackTrace(); } }
}
以及运行结果
第二版本程序Prog2:
+ 改写成一个函数(函数名称为ArraySum),能实现任意长度数组所有元素求和;
+ 数据准备:a)数组长度:任意; b)数组数据来源:实验数据A列.
1 public class Array_2 { 2 3 public static double sum=0; 4 public static double[] Darray=new double[100]; 5 public static void main(String[] Sarry) 6 { 7 int count=func_1(); 8 double fina=func(count); 9 System.out.print("您说得的最后之后和为:"+fina); 10 } 11 12 static int func_1() 13 { 14 System.out.println("请输入任意的数组长度:"); 15 Scanner scan=new Scanner(System.in); 16 int count=scan.nextInt(); 17 if(count>100||count<0){ 18 System.out.print("输入的有数值有问题,请重新输入"); 19 func_1(); 20 }; 21 return count; 22 } 23 static double func(double count) 24 { 25 try 26 { 27 String buf=null; 28 BufferedReader in=new BufferedReader(new FileReader("C:/Users/狸猫/Array/src/Array/数组表.csv") ); 29 int icount=100; 30 for(int i=0;i<icount;i++) 31 { 32 buf=in.readLine(); 33 String[] temp=buf.split(","); 34 Darray[i]=Double.parseDouble(temp[0]); 35 } 36 for(int i=0;i<count;i++) 37 { 38 sum+=Darray[i]; 39 } 40 in.close(); 41 System.out.println("sum="+sum); 42 } 43 catch(FileNotFoundException e) 44 { 45 e.printStackTrace(); 46 } 47 catch(IOException e) 48 { 49 e.printStackTrace(); 50 } 51 catch(Exception e) 52 { 53 e.printStackTrace(); 54 } 55 return sum; 56 57 } 58 59 60 }
运行结果
第三版本程序Prog3:
+ 将Prog2改写成能从文件中读取数据,实现任意长度数组,指定范围内元素相加。
+ 数据准备:a)数组长度:任意; b)数组数据来源:从文件中读取.
这个地方比较有趣,看到array_2的代码可以再利用 里面的分析输入数据的判断条件本来想重写,最后发现融在一起重写太麻烦,用fjudge_2之前只要加入个判断初始条件如果在数组之内就可以代码再利用。
Quenstion_1:这里有个问题在数据读入方向,如何读入两次数据进行判断,我觉得应该有更精简的办法,希望哪位大牛能给出解决办法
public class Array_3 { public static double sum=0; public static double[] Darray=new double[100]; public static void main(String[] Sarry) { int fnum=fjudge_2(); int count=fjudge_1(fnum); double fina=func(fnum,count); System.out.print("您说得的最后之后和为:"+fina); } static int fjudge_1(int fnum) { System.out.println("请输入任意的数组长度:"); Scanner scan=new Scanner(System.in); int count=scan.nextInt(); int fcount=count+fnum; if((count>99||count<0)&&(fcount>99)) { System.out.print("WARING: 输入的有数值有问题,请重新输入(请输入<100整数):"); fjudge_1(fnum); }; return count; } static int fjudge_2() { System.out.println("请输入您想开始的数据位置:"); Scanner scan=new Scanner(System.in); int fnum=scan.nextInt(); if(fnum>100||fnum<0) { System.out.print("WARING: 输入的有数值有问题,请重新输入(请输入<100整数):"); fjudge_2(); }; return fnum; } static double func(int fnum,int count) { try { String buf=null; BufferedReader in=new BufferedReader(new FileReader("C:/Users/狸猫/Array/src/Array/数组表.csv") ); int icount=100; for(int i=0;i<icount;i++) { buf=in.readLine(); String[] temp=buf.split(","); Darray[i]=Double.parseDouble(temp[0]); } for(int i=fnum;i<count;i++) { sum+=Darray[i]; } in.close(); System.out.println("sum="+sum); } catch(FileNotFoundException e) { e.printStackTrace(); } catch(IOException e) { e.printStackTrace(); } catch(Exception e) { e.printStackTrace(); } return sum; } }
运行结果
gihub https://github.com/Vpygmalion