博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
作业2
阅读量:4551 次
发布时间:2019-06-08

本文共 5325 字,大约阅读时间需要 17 分钟。

作业要求:

  1. 第一版本程序Prog1: + 给定一个数组,实现数组元素求和;,具体要求:实现对一维数组(a[100])的所有元素相加运算。 + 数据准备:a)数组长度:100;b)数组数据来源:实验数据A列:1~100,CSV 格式则填充 前100个数据.

  2. 第二版本程序Prog2: + 改写成一个函数(函数名称为ArraySum),能实现任意长度数组所有元素求和; + 数据准备:a)数组长度:任意; b)数组数据来源:实验数据A列.

  3. 第三版本程序Prog3: + 将Prog2改写成能从文件中读取数据,实现任意长度数组,指定范围内元素相加。 + 数据准备:a)数组长度:任意; b)数组数据来源:从文件中读取.

  4. 依次将Prog1、Porg2、Prog3上传到Github。

  5. 发布一篇博客,介绍上述三个程序的实现过程。遇到的问题及如何解决的。

prog1:

       第一版本的程序实际上是很简单的,因为没有要求从文件中读取,我们可以直接复制前100个元素(虽然用文件流更简单)。这题没什么好说的,太简单了。

prog2:

       第二版本的程序也不是很难,只不过这次要求任意长度的数组,所以要先从控制台输入数组的长度,这里用Scanner类实现数组长度的输入。用文件流方式把A列前100个数取出,具体实现过程是按行读取数据,然后屏蔽掉B和C列,求和,输出。

prog3:

       第三版程序我在一个地方卡了一个下午,就是文件的打开,当我把Excel文件里的数据粘贴复制进txt文件中时,然后再程序中使用时程序总是出错,而把要打开的文件换成csv格式时,就能成功。

      程序的具体过程是这样的,我先要求用户输入任意的数组长度(不大于3*65535),再输入数组要求和的范围;

      我把求和的过程分为三个部分:第一部分为范围小下标那一行,中间所有行,最后一行。各自分析,然后相加。最后打印出结果。

github账号:dxy123456

prog1:

package prog;import java.io.*;public class prog1 {    public static void main(String[] args) {            try{System.out.println("下面是数组100个元素的和:");          FileReader fr1=new FileReader("data.csv");          BufferedReader bf1=new BufferedReader(fr1);          String str1 = null;String [] strI=null;int total=0,j=0,count=0;          while(count<100&&(str1=bf1.readLine())!=null){    //将中间的数全相加                                                                                                           strI=str1.split(",");                    count++;                                                        j=Integer.parseInt(strI[0]);                                           total+=j;                                         }          System.out.print("the 100 number sum is:"+total);          fr1.close(); bf1.close();        }catch (Exception e){            e.printStackTrace();}    }}

prog2:

package prog;import java.io.*;import java.util.Scanner;public class prog2 {    public static void main(String[] args) {            try{System.out.println("请输入数组的长度:");          Scanner in = new Scanner(System.in);          int a = in.nextInt();          in.close();          FileReader fr1=new FileReader("data.csv");          BufferedReader bf1=new BufferedReader(fr1);          String str1 = null;String [] strI=null;int total=0,j=0,count=0;          while(count

prog3:

package prog;import java.io.*;import java.util.*;/*已知数据在文件中的存储方式为每三个数为一行,共65536行*/public class prog3{    public static void main(String[] args) {                            System.out.println("输入数组长度(默认起始位置从第一个数据开始开始):");         Scanner in = new Scanner(System.in);          int a = in.nextInt();                System.out.println("下面将在数组的指定范围内求sum");        System.out.println("输入范围的起始值(假设第一个数据的起始位置为0):");             int b=in.nextInt();         System.out.println("输入范围的结束值:");         int c=in.nextInt();             in.close();int flage=0;         try{             if(b<0||c>=a)            {            flage=1;            System.out.println("超出范围!");throw new IOException();            }         if(b>c)            {             flage=1;            System.out.println("左范围大于右范围!");throw new IOException();            }         }catch(Exception e){e.printStackTrace();}         if(flage==0)            D(a,b,c);          }    public static void D(int a,int b,int c) {        try{          FileReader fr1=new FileReader("data.csv");          BufferedReader bf1=new BufferedReader(fr1);          int count=0;          String str1 = null;String [] strI=null;int total=0,j=0;          while((b/3+1)>1&&(str1=bf1.readLine())!=null){
//字符不等于空,找到要求数组的上一行! count++; if(b/3==count) break; } str1=bf1.readLine(); count++; //开始累加的起始行数 strI=str1.split(","); int f=b%3; if(c/3>b/3){ //防止指定范围只在第一行 for(;f<3;f++){ //将起始行元素相加 j=Integer.parseInt(strI[f]); System.out.print("前面"+j+"\n"); total+=j; } } else{ //如果范围只有一个或两个元素且靠近左边 for(;f<=(c%3);f++){ j=Integer.parseInt(strI[f]); System.out.print("前面"+j+"\n"); total+=j; } } if(b/3!=c/3){ while((c/3!=count)&&(str1=bf1.readLine())!=null){ //将中间的数全相加 strI=str1.split(",");count++; for(int i=0;i<3;i++){ j=Integer.parseInt(strI[i]); System.out.print("中间"+j+"\n"); total+=j; } } } str1=bf1.readLine(); strI=str1.split(","); int y=c%3; if(b/3!=c/3){ for(int s=0;s<=y;s++){ //将最后一行元素相加 j=Integer.parseInt(strI[s]); System.out.print("最后"+j+"\n"); total+=j; } } System.out.print("\n"+total); fr1.close(); bf1.close(); }catch (Exception e){ e.printStackTrace();} }}

 

 

 

      

转载于:https://www.cnblogs.com/dxy123456/p/5251984.html

你可能感兴趣的文章
Spring基础2
查看>>
【灵异短篇】这个夜晚有点凉
查看>>
以淘宝网为例,描绘质量属性的六个常见属性场景
查看>>
HDU 2838 (树状数组求逆序数)
查看>>
HTML5的新特性
查看>>
unity3d插件Daikon Forge GUI 中文教程-1-Daikon Forge介绍
查看>>
Filter及FilterChain的使用具体解释
查看>>
IntentFilter
查看>>
赵雅智_BroadcastReceiver电话监听
查看>>
记项目中易出现的bug点
查看>>
[IOS]译Size Classes with Xcode 6: One Storyboard for all Sizes
查看>>
localStorage存储数组以及取数组方法
查看>>
安装Hadoop
查看>>
LoadRunner参数化MySQL
查看>>
jQuery知识点小结
查看>>
215. Kth Largest Element in an Array
查看>>
【linux 开源工具之LVS】
查看>>
Linux命令(自学)
查看>>
九宫格
查看>>
SQL Server 2005“备份集中的数据库备份与现有的数据库不同”解决方法此信息转载自BlueSky's Blog,www.heuupk.com,为尊重无价的知识请保留此版权信息。...
查看>>