数组的相关问题

抱歉 本来计划的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

 

posted on 2016-03-21 16:49  Vip李汉超  阅读(205)  评论(2编辑  收藏  举报

导航