博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
java02实验:方法
阅读量:5092 次
发布时间:2019-06-13

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

一:素数输出

1.实验要求:

(1)编写判断该数是否为素数的方法,并在主方法中对其进行调用。

(2)注意编程规范:程序开头部分的目的,作者以及日期;必要的空格与缩进,适当的注释等;

(3)实验报告中要求包括程序设计思想、程序流程图、源代码、运行结果截图、编译错误分析等内容。 

2.实验内容

(1)计算并输出3~100之间的素数。

(2)编程满足下列要求:

 1)按照每行5个输出;

 2)输出任意两个整数之间的所有素数;

 3)输入两个整数,输出这两个整数之间的最大的10个和最小的10个素数

3.程序设计思想:

首先要了解素数的定义在大于1的自然数中,不存在除了1和它本身的因数。了解定义后,就知道要用循环语句依次求余来判断。我采用在类外定义一个只有一个参数的函数,来实现判断这个参数是否为素数。任意两个整数之间的素数输出,我用for语句将他们分别定义为初始条件和结束条件,然后又定义了一个计数器,实现每行五个输出,最后的最大和最小素数,只用了一个动态数组Arraylist,正反输出就解决了

4.源代码:

1 package java课堂;  2   3 /*20173442 信1705-3 田昕可*/  4   5 import java.util.*;  6   7 public class Zuoye2 {  8   9   10  11   12  13 public static void main(String[] args) { 14  15           // TODO 自动生成的方法存根 16  17           int i; 18  19 int n; 20  21 int m; 22  23 int c=0; 24  25 ArrayList list=new ArrayList();//定义动态数组 26  27 Scanner scan=new Scanner(System.in); 28  29 System.out.println("请输入两个数,计算他们中间的素数"); 30  31 n=scan.nextInt(); 32  33 m=scan.nextInt();//输入两个数 34  35 for(i=n;i<=m;i++) 36  37 { 38  39 if(func(i)==1) 40  41   { 42  43 System.out.print(i+" "); 44  45 list.add(i); 46  47 c++; 48  49   } 50  51 else 52  53 continue; 54  55 if(c%5==0) 56  57 { 58  59                   System.out.print("\n"); 60  61 } 62  63   64  65 } 66  67 System.out.print("\n");//换行,进行下一个操作 68  69 if(list.size()<10) 70  71 System.out.print("不足十个数"); 72  73 else 74  75 { 76  77           System.out.print("最小的十个素数 :"); 78  79      for(i=0;i<10;i++) 80  81 System.out.print(list.get(i)+" ");//输出最小的十个素 82  83     System.out.print("\n");//换行,进行下一个操作 84  85     System.out.print("最大的十个素数 :"); 86  87     for(i=list.size()-1;i>=list.size()-10;i--) 88  89 System.out.print(list.get(i)+" ");//输出最大的十个素数 90  91 } 92  93   94  95 } 96  97   98  99 public static int func(int n)//判断是否为素数的函数100 101 {102 103           int i;104 105           boolean bl=true;106 107           for(i=2;i

反思思考:

第一次调试时,发现不能得到正常结果,最后返回来看代码发现,在输出最大的十个素数,进行动态数组从后往前操作时,初始值越界,没有考虑到数组下标的特殊性,通过修改解决了问题。

二:递归方法

1、  实验要求:

(1)必须用递归函数实现上述问题;

(2)注意编程规范:程序开头部分的目的,作者以及日期;必要的空格与缩进,适当的注释等;

(3)实验报告中要求包括程序设计思想、程序流程图、源代码、运行结果截图、编译错误分析等内容。

2、    实验内容

(1)    使用递归方式判断某个字串是否是回文( palindrome );

回文”是指正着读、反着读都一样的句子。比如“我是谁是我”

使用递归算法检测回文的算法描述如下:

A single or zero-character string is a palindrome.

Any other string is a palindrome if the first and last characters are the same, and the string that remains, excepting those characters, is a palindrome.

 

3.程序设计思想:

判断字符串是否回文,第一反应是运用数组首位依次比较判断,但题目要求必须使用递归方法,那就放到类外函数体中递归使用。构造一个函数,参数为字符串首地址,初始值start,字符串的长度size。start为初始下标0,如果start>=size,说明只剩下了一个字符,一定回文,返回true,递归结束。如果满足,就依次首位判断,只要有一组不相等,就返回false。

4.源代码

1 package java课堂; 2  3 import java.util.*; 4  5 public class Huiwen { 6  7   8  9 public static boolean func(String str,int start,int size)10 11 {12 13           if(start>=size-1)14 15                   return true;16 17           if(str.toCharArray()[start]!=str.toCharArray()[size-1])18 19                   return false;20 21           return func(str,start+1,size-1);22 23 }24 25 public static void main(String[] args) {26 27           // TODO 自动生成的方法存根28 29 Scanner scan=new Scanner(System.in);30 31 String s;32 33 System.out.println("请输入字符串 :");34 35 s=scan.nextLine();36 37 if(func(s,0,s.length()))38 39 System.out.println("回文");40 41 else42 43 System.out.println("不回文");44 45 }46 47  48 49 }

 

5.运行截图

 

 

 

 

反思思考:

开始时不知道如何将字符串与下标相结合起来,后来问同学知道了toCharArray()函数,将字符串转化为字符数组,方便操作和比较

三: 统计分析

1.实验要求:

实验报告中要求包括程序设计思想、程序流程图、源代码、运行结果截图、编译错误分析等内容。

2、实验内容:

(1)    用户需求:英语的26 个字母的频率在一本小说中是如何分布的?某类型文章中常出现的单词是什么?某作家最常用的词汇是什么?《哈利波特》 中最常用的短语是什么,等等。

(2)    要求:输出单个文件中的前 N 个最常出现的英语单词,并将结果输入到文本文件中。

 

3.程序设计思想:

首先一定要创两个文件,一个为读入文件,一个为写入文件,并记录其路径。然后编写程序,从读入文件中读取数据,并存到字符串当中。后通过上网查询了解到字符串函数中有一项分割操作,将字符串又分割成一个一个的单词。计数的问题,我采用了创立动态数组,与字符串数组一一比较,如果存在一样的,跳过,不一样的就存入。最终通过循环,加入计数,就实现了统计。

4.源代码:

1 package java课堂;  2   3    4   5 import java.io.*;  6   7 import java.util.*;  8   9 import java.lang.*; 10  11   12  13 public class Zuoye1 { 14  15   16  17      public static void main(String[] args) { 18  19      try { 20  21      int i=0; 22  23      int j; 24  25      //从文件地址中读取内容到程序中 26  27      //1、建立连接 28  29      File file=new File("F:/java开发/wenben.txt"); 30  31      BufferedReader br=new BufferedReader(new FileReader(file)); 32  33      34  35      FileOutputStream out=new FileOutputStream("F:/java开发/jieguo.txt"); 36  37     PrintStream p=new PrintStream(out);//文件写入流 38  39     40  41      String s; 42  43      char []c=new char[200]; 44  45      s=br.readLine();//创建字符串,将文本文件中的文字存进去 46  47     System.out.println(s); 48  49     String []s1=s.split(" |,");//s1储存每一个单词 50  51   52  53     ArrayList list = new ArrayList();//动态数组 54  55     for(i=0;i

 

反思思考:

对文件操作这块还是有很大的问题,在读入和写入的过程中耗费了太多的时间,还是基础功夫不够扎实。

 

 

 

 

 

转载于:https://www.cnblogs.com/Aduorisk/p/9788443.html

你可能感兴趣的文章
【2.2】创建博客文章模型
查看>>
【3.1】Cookiecutter安装和使用
查看>>
【2.3】初始Django Shell
查看>>
Linux(Centos)之安装Redis及注意事项
查看>>
bzoj 1010: [HNOI2008]玩具装箱toy
查看>>
Kotlin动态图
查看>>
从零开始系列之vue全家桶(1)安装前期准备nodejs+cnpm+webpack+vue-cli+vue-router
查看>>
ASP.NET缓存 Cache之数据缓存
查看>>
bzoj3529: [Sdoi2014]数表
查看>>
SSH三大框架 整合必备jar包
查看>>
什么是电子商务?电子商务面临的几个关键问题及解决办法?电子商务的核心是什么?B2C电子商务运营的核心是什么 ?...
查看>>
Jsp抓取页面内容
查看>>
AJAX与servlet的组合,最原始的
查看>>
大三上学期软件工程作业之点餐系统(网页版)的一些心得
查看>>
MySQL 数据表修复及数据恢复
查看>>
可选参数的函数还可以这样设计!
查看>>
走高端树品牌 IT大佬竞相“归田”
查看>>
大型网站应用之海量数据和高并发解决方案总结一二
查看>>
[BZOJ4518][SDOI2016]征途(斜率优化DP)
查看>>
Android recycleView的研究和探讨
查看>>