Java上机实验六
更新时间:2023-10-03 18:58:01 阅读量: 综合文库 文档下载
《Java程序设计》实验报告
实验六 数组与字符串
班级: 信计08—1 学号: 200811011022 姓名: 孙海陆 实验地点: 实验楼二机房 实验时间: 2011.11.10
一、实验目的:
1、实例1数组的应用
采用冒泡排序算法将10个整数按照从小到大的顺序排列
2、实例2 检测回文串
利用String类的常用方法检测字符串是否为回文串。
3、实例3 综合实例——电话号码分析与处理 熟悉一维数组的创建和使用,掌握字符串操作的常用方法。 二、实验内容
1、冒泡排序是一种简单的交换排序。其基本思路是,从数列左边开始扫描待排序的元素,在扫描过程中依次对相邻元素进行比较,将较大值元素后移。每经过一轮排序后,值最大的元素将移到末尾,此时记下该元素的位置,下一轮排序只需比较到此位置即可。如此重复,直到比较最后两个元素。
对n个元素冒泡排序时,总共需要进行n-1轮。第1轮需要比较n-1次,第2轮需要比较n-2次,第i轮需要比较n-i次,最后一轮需要比较1次。
【参考程序】 package Chapter5; public class NumberSort {
public static void main(String[] args) {
int[] array = { 3, 1, 6, 2, 9, 0, 7, 4, 5, 8 }; System.out.print(\数组排列前的顺序为:\
for (int i = 0; i < array.length; i++) { // 输出数组中的每个元素 }
int temp; // 存储交换的变量值
for (int i = 0; i < array.length - 1; i++) { // 比较n-1轮
for (int j = 0; j < array.length - i - 1; j++) { // 每轮比较
if (array[j] > array[j + 1]) {
temp = array[j]; array[j] = array[j + 1];
System.out.print(array[i] + \
《Java程序设计》实验报告
}
}
}
}
array[j + 1] = temp;
System.out.println();
System.out.print(\数组排列后的顺序为:\
for (int i = 0; i < array.length; i++) { // 输出数组中的每个元素 }
System.out.print(array[i] + \
2、对于一个字符串,如果从前向后和从后向前读都一样,则称为回文串。例如:单词mom、dad和noon等都是回文串。
判断是否为回文串的方法是:先判断该字符串的第一个字符和最后一个字符是否相等,如果相等,检查第二个字符和倒数第二个字符是否相等。这个过程一直进行,直到出现不匹配的情况或者串中所有的字符都检查完毕。
【参考程序】 // CheckString.java package Chapter5; import java.util.Scanner; public class CheckString {
public static void main(String[] args) { }
private static boolean isPaildrome(String check) {
int low = 0; // 定义首字符的索引
int high = check.length() - 1; // 定义尾子符的索引 String checkStr = null;
System.out.println(\请输入要检测的字符串:\Scanner in = new Scanner(System.in);
checkStr = in.nextLine(); // 存储用户输入的字符串
if (isPaildrome(checkStr)) { // 判断输入的字符串是否为回文串
System.out.println(checkStr + \是回文串。\
} else { }
System.out.println(checkStr + \不是回文串。\
《Java程序设计》实验报告
}
}
while (low < high) { } return true;
// 检测首尾两个字符是否相等
if (check.charAt(low) != check.charAt(high))
return false;
low++; high--;
3、设计一个方法统计给定的电话号码中每个数字出项的频率,然后根据该方法返回的结果,把出现频率最高的数字与数字8互换。
【参考程序】
// NumberManager.java package Chapter5; /* 将字符串数组中的某个字符与'8'进行互换 */ private static String replaceOneString(int public class NumberManager {字(0、1…、8、replaceNum, String oldString) { 9) public static int[] countNumbers(String[] numbers) { StringBuffer strBuf = new StringBuffer(); int[] numberArray = new int[10]; // 将数值转换为字符格式的数字, for (int i = 0; i < numbers.length; i++) { 例如1->'1' for (int j = 0; j < numbers[i].length(); j++) { char replacedChar = (char) /* * numbers[i].charAt(index) * 例如,(replaceNum + '0'); '1'-'0'=1,'5'-'0'=5等。因此,如果字符为'5', for (int i = 0; i < oldString.length(); * 则相当于numberArray[5]加1,其他字符与此类似。 */ numberArray[numbers[i].charAt(j) - '0']++; } /* 打印整型数组 */ static void } return numberArray; } i++) { 符 // 获取oldString字符串中的字char ch = oldString.charAt(i); // 如果字符串中字符为指定字符,则将其换为'8' if (ch == replacedChar) { ch = '8'; } else if (ch == '8') { ch = replacedChar; // 将'8' private numArr) { { printArray(int[] 换为指定字符 } for (int i = 0; i < numArr.length; i++) strBuf.append(ch); System.out.printf(i + \《Java程序设计》实验报告
} System.out.println(); // 将ch字符添加到strBuf的尾部 } // StrBuf.toString()方法用于把字符public static String[] replaceNumbers(String[] 缓冲区里的所有字符连接在一起并返回 numbers, int[] numberCounts) {String[] results return strBuf.toString(); = new String[numbers.length]; } int replaceNum = /* 打印字符串 */ getMaxNumber(numberCounts); private static void printString(String[] newArr) // 得到最大数的索引下标 { String replaceString = { replaceOneString(replaceNum, numbers[i]); results[i] = replaceString; // 逐个给results[i]赋值 } } return results; for (int i = 0; i < numbers.length; i++) { } for (int i = 0; i < newArr.length; i++) } System.out.printf(newArr[i]); System.out.println(); }/* 替换数字 */ public static void main(String[] args) { String[] numbers = { \\/* 得到出现频率最高数字的下标 */ System.out.println(\原始电话号码: private static int getMaxNumber(int[] \numberCounts) { for (int i = 0; i < numbers.length; i++) int currenMaxNumber = -1; { // 输出原始号码 int index = -1; System.out.println(numbers[i]); // 获取numberCounts数组中的最大数 } for (int i = 0; i < // 统计各数字串中数字字符'0'、numberCounts.length; i++) { '1'...'9'出现的频率 if (numberCounts[i] > currenMaxNumber) int[] numArr = { // 记录当前最大数 countNumbers(numbers); currenMaxNumber = numberCounts[i]; System.out.println(\各数字在电话号 // 记录最大数的下标 码中出现的频率:\ } } return index; } index = i; 率 // 打印数字字符'0'、'1'...'9'出现的频printArray(numArr); // 将数字串中高频数字符与字符'8'= 互换 String[] newArr replaceNumbers(numbers, numArr); System.out.println(\高频数字与8互《Java程序设计》实验报告
换后的电话号码: \ } } printString(newArr); 三、实验结果与分析 1、数组排列前的顺序2、 3、33933 为: 请输入要检测的字符各数字在电话号码中出现的频串: 率: 3 1 6 2 9 0 7 4 5 8 数组排列后的顺序为: mom 0 1 2 3 4 5 6 7 8 9 2、 mom是回文串。 0:2,1:3,2:2,3:6,4:1,5:2,6:2,7:2,8:2,9:2, 高频数字与8互换后的电话号码: 18701192548、32376650、88988 四、实验总结与心得体会
1、注意类的开头大写,主函数前staitic的使用 2、实体的命名注意重载与重写的区别。
正在阅读:
Java上机实验六10-03
《合同管理》习题集06-10
河南工业大学大学计算机基础填空题11-27
新课标人教版小学二年级语文上册全册教案(含三维目标,含单元计划04-18
2015-2016年人教版高一英语必修二Unit 1练习题及答案Unit 1Cultural relics Period 412-26
Sketchup弹簧建模08-25
- 多层物业服务方案
- (审判实务)习惯法与少数民族地区民间纠纷解决问题(孙 潋)
- 人教版新课标六年级下册语文全册教案
- 词语打卡
- photoshop实习报告
- 钢结构设计原理综合测试2
- 2014年期末练习题
- 高中数学中的逆向思维解题方法探讨
- 名师原创 全国通用2014-2015学年高二寒假作业 政治(一)Word版
- 北航《建筑结构检测鉴定与加固》在线作业三
- XX县卫生监督所工程建设项目可行性研究报告
- 小学四年级观察作文经典评语
- 浅谈110KV变电站电气一次设计-程泉焱(1)
- 安全员考试题库
- 国家电网公司变电运维管理规定(试行)
- 义务教育课程标准稿征求意见提纲
- 教学秘书面试技巧
- 钢结构工程施工组织设计
- 水利工程概论论文
- 09届九年级数学第四次模拟试卷
- 上机
- 实验
- Java
- 单片机分章试题库附答案 - 21277
- 湖南农业大学生物化学04-酶学-02酶促反应动力学(1) - 图文
- 襄阳市城市规划管理技术规定()
- 苏教版语文三年级下册课外阅读练习题
- 项目一:市场营销导论
- 铅笔字社团活动计划
- 2019年高考地理一轮复习专题营造地表形态的力量每日一题
- 论加强市政道路施工质量控制的措施
- 现在学什么技术发展前景好 - 图文
- 北京市施工组织设计管理规程
- 2012版《数据结构A》课程实验指导书
- 煤化工毕业设计年产20万吨甲醇合成工艺设计
- JAVA课程设计-银行存取管理系统(所有代码)
- 电力系统有功功率与频率调整
- 教师考试进城考试教育学教育心理学练习题案例分析题
- 安安稳稳 形容十分安定稳当
- 赤峰学院2016年文物与博物馆硕士专业学位研究生招生简章
- 公司财务学(简答题)
- 广西壮族自治区普通高等学校优秀专科高职生选拔升入本科学习学生推荐表
- 危货运输反恐预案