内容发布更新时间 : 2025/1/7 6:27:27星期一 下面是文章的全部内容请认真阅读。
《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 + \