一:素数输出

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<n;i++)
108
109 {
110
111 if(n%i==0)
112
113 bl=false;
114
115 }
116
117 if(bl==true)
118
119 return 1;
120
121 else
122
123 return 0;
124
125 }
126
127
128
129 }

反思思考:

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

二:递归方法

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 else
42
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<s1.length;i++)
56
57 {
58
59 if(!list.contains(s1[i])&&s1[i]!=" ")
60
61 list.add(s1[i]);
62
63 }//动态数组存储不重复的单词
64
65 for(i=0;i<list.size();i++)
66
67 {
68
69 int count=0;
70
71 for(j=0;j<s1.length;j++)
72
73 {
74
75 if(list.get(i).equals(s1[j]))
76
77 count++;
78
79 }
80
81 //System.out.println(list.get(i)+" "+count);
82
83 p.println(list.get(i)+" "+count);
84
85 }//计数
86
87
88
89 br.close();
90
91 } catch (FileNotFoundException e) {
92
93 //系统强制解决的问题:文件没有找到
94
95 e.printStackTrace();
96
97 } catch (IOException e) {
98
99 //文件读写异常
100
101 e.printStackTrace();
102
103 }
104
105
106
107 }
108
109
110
111 }

反思思考:

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

 

java02实验:方法的更多相关文章

  1. 大数据处理之道(实验方法&lt;二&gt;)

    一:交叉验证(crossvalidation)(附实验的三种方法)方法简单介绍   (1) 定义:交叉验证(Cross-validation)主要用于建模应用中,比如PCR(Principal Com ...

  2. JAVA课堂动手动脑实验--方法的重载定义,组合数的递归算法

    1. 请看以下代码,你发现了有什么特殊之处吗? 答:此程序中的两个方法虽然方法名一样,但是参数的数据类型不同: 这是方法的重载,方法的重载需要满足的条件: 1)方法名相同: 2)参数类型不同,参数个数 ...

  3. C#中实现并发的几种方法的性能测试

    C#中实现并发的几种方法的性能测试 0x00 起因 去年写的一个程序因为需要在局域网发送消息支持一些命令和简单数据的传输,所以写了一个C/S的通信模块.当时的做法很简单,服务端等待链接,有用户接入后开 ...

  4. 实验一 DOS

    实验一.DOS实验 一.           实验目的 DOS(Disk Operating System)是一个使用得十分广泛的磁盘操作系统,就连眼下流行的Windows9x/ME系统都是以它为基础 ...

  5. 实验四 简单的PV操作

    实验四 简单的PV操作 专业 网络工程   姓名 方俊晖 学号 201406114309 一.        实验目的 1.掌握临界区的概念及临界区的设计原则: 2.掌握信号量的概念.PV操作的含义以 ...

  6. Monte Carlo方法简介(转载)

    Monte Carlo方法简介(转载)       今天向大家介绍一下我现在主要做的这个东东. Monte Carlo方法又称为随机抽样技巧或统计实验方法,属于计算数学的一个分支,它是在上世纪四十年代 ...

  7. OS实验报告--FCFS算法

    实验二.作业调度模拟实验 专业:商业软件工程  姓名:王泽锴 学号:201406114113 一.实验目的 (1)加深对作业调度算法的理解: (2)进行程序设计的训练. 二.实验内容和要求 (1)实验 ...

  8. 实验一报告--认识DOS

    实验一  DOS命令解释程序的编写 13物联网             黄鸿佳              201306104107 一. 实验目的 (1)认识DOS: (2)掌握命令解释程序的原理: ...

  9. OS实验一实验报告

    实验一.命令解释程序的编写实验 专业:商业软件工程   姓名:王泽锴  学号:201406114113 一.实验目的 (1)掌握命令解释程序的原理: (2)*掌握简单的DOS调用方法: (3)掌握C语 ...

随机推荐

  1. 神经网络AI加速器技术

    神经网络AI加速器技术 能够直接加速卷积神经网络,还能够直接运行常见的网络框架,如TensorFlow.Caffe.PyTorch,DarkNet等,支持用户定制化的网络和计算类型. 功能特点: ● ...

  2. 工作流中的流程追溯!详细解析Activiti框架中的历史组件

    Activit中的历史简介 历史: Activiti中的一个组件,可以捕获发生在进程执行中的信息并永久的保存.与运行时数据不同的是,当流程实例运行完成之后它还会存在于数据库中 历史实体对象有5个: H ...

  3. 自动发布.NET Core Web应用

    1 原因和目的 相信很多开发者都需要将自己的编写的应用进行编译并部署到服务器上,这个过程在个人或小型团队的项目中都是一个简单的事情.但是对于并行化开发而言,就需要通过工具来辅助这个过程.于是,我参考了 ...

  4. 关于使用JS去除URL中的指定参数问题,js 对url进行某个参数的删除,并返回url

    在网页上找了半天,发现现在的资源实在是少的可怜,而前端尤甚.所以没办法,于是自己花了一些时间写了一个: 1 /** 2 * 删除URL中的指定参数 3 * @param {*} url 4 * @pa ...

  5. SpringCloud Alibaba实战(6:nacos-server服务搭建)

    源码地址:https://gitee.com/fighter3/eshop-project.git 持续更新中-- 大家好,我是三分恶. 这一节我们来学习SpringCloud Alibaba体系中一 ...

  6. 无规矩不成方圆,聊一聊 Spring Boot 中 RESTful 接口设计规范

    在设计接口时,有很多因素要考虑,如接口的业务定位,接口的安全性,接口的可扩展性.接口的稳定性.接口的跨域性.接口的协议规则.接口的路径规则.接口单一原则.接口过滤和接口组合等诸多因素,本篇文章将简要分 ...

  7. 将Winform和wpf的界面转换为CPF代码用来实现跨平台

    CPF的设计器里带界面代码转换功能,将运行中的Winform或者wpf的程序界面转换为cpf代码,主要转换控件类型和布局,默认支持的是常用的原生控件.不支持Netcore,只支持.Netframewo ...

  8. ES系列(七):多节点任务的分发与收集实现

    我们知道,当我们对es发起search请求或其他操作时,往往都是随机选择一个coordinator发起请求.而这请求,可能是该节点能处理,也可能是该节点不能处理的,也可能是需要多节点共同处理的,可以说 ...

  9. Pandas高级教程之:category数据类型

    目录 简介 创建category 使用Series创建 使用DF创建 创建控制 转换为原始类型 categories的操作 获取category的属性 重命名categories 使用add_cate ...

  10. 生成工作区设置文件settings.json

    先Ctrl+Shift+P,然后输入setting搜索 找到工作区设置(工作区,仅在当前打开的界面下生效,文档位置与根目录/.vscode/setting.json(可自己创建,也可不创建)) 选择之 ...