Java实验报告
一、实验代码(必须带注释,用红色标识注释)
1. 第一题1、随机生成一个6位的正整数,编程实现由这六位数字生成的最大数和最小数。
import java.io.IOException;//这个包用来捕获输入输出异常
import java.util.Arrays;//导入Arrays的一些工具方法,如Arryas.sort()
import java.util.Random;//用于导入随机数这个类
publicclass Number {
publicstaticvoid main(String[] args)throws IOException {
// TODO 自动生成的方法存根
//Scanner reader =new Scanner(System.in);
Random random = new Random(); //创建随机数这个类的一个对象
int max=1000000;//规定最大值和最小值的取值范围
int min=100000;
int a=random.nextInt(max)%(max-min+1) + min;//a就是最小值min到最大值max之间的任意随机数
String x=a+"";
String str1[] = x.split(""); //用“ ”分割,放入集合
System.out.print("生成的六位数为:") ;
print(str1);
System.out.print("组成的最小值为:");//输出最小值
Min(str1);
print(str1);
System.out.print("组成的最大值为:");//输出最大值
Max(str1);
print(str1);
}
publicstaticvoid Max(String str[])//求六个数组成的最大值
{
for(int i=0;i<str.length;i++)//用冒泡排序法
for(int j=i+1;j<str.length;j++)
if(str[j].compareTo(str[i])>0)
{
@SuppressWarnings("unused")
//屏蔽java编译中的一些警告信息:定义的变量在代码中并未使用且无法访问
String temp=str[i];
str[i]=str[j];
str[j]=temp;
}
}
//求六个数组成的最小值
publicstaticvoid Min(String str[])
{
Arrays.sort(str);
for(int i=0;i<str.length;i++)
if(str[i].compareTo("0")>0)
{
String a=str[0];
str[0]=str[i];
str[i]=a;
break;
}
}
//输出字符的函数
public staticvoid print(String str[])
{
for(String s:str)//foreach函数用来处理字符通用字符的长度的情况
System.out.print(s);
System.out.println();
}
}
2. 第二题使用命令行参数读入三个字符串,第三个字符串为一个带目录的文件名,
如:java StringDemo2 hello el F:\a\b\c\file1.etca,完成下列功能:
1)如果参数的数目不够,显示相应的提示信息并退出程序的执行。
2)如果第二个字符串在第一个字符串中出现过,则返回true值,否则返回false值--true
public class Demo {
public static void main(String[] args) {
//判断传进来的参数数量是否正确
if(args.length <3){//判断
System.out.println("参数数量不足");
return;
}
//判断第一个字符串是否包含了第二个字符串
if(args[0].contains(args[1])){
System.out.println("true");
}else{
System.out.println("false");
}
//获取第三个字符串里的文件名
String fName = args[2].trim();
int pre = fName.lastIndexOf("\\") + 1;//”取\\的位置”
int rear = fName.lastIndexOf(".");//截取”.”的位置
String fileName = fName.substring(pre, rear);//把文件名截取出来
System.out.println("fileName = " + fileName);
}
}
3.第三题读取键盘输入的任意字符串,如:She is a very good teacher,按要求执行以下操作:
(1) 读取键盘输入的字符,如‘e’,统计该字符在字符串串中出现的次数
(2) 统计某字符串如”er” ,在字符串中出现的次数
(3) 将字符串中每个单词的首字母变成大写,形成新的字符串,并输出。
import java.io.IOException;
import java.util.*;
publicclass Numbe {
publicstaticvoid main(String[] args)throws IOException {
// TODO 自动生成的方法存根
@SuppressWarnings("resource")
Scanner reader =new Scanner(System.in);
String str;//用来接收用户输入的字符串
//byte[] b=str.getBytes();
int choice=0;//用来接收用户选择的功能
System.out.print("请输入一串字符:");
str=reader.nextLine();//接收一行字符
menu();//输出选项的函数
while(true)
{ System.out.print("请输入你的选择:");
choice=reader.nextInt();//接收用户的选择
switch(choice)
{
//统计一个字符在字符串串中出现的次数
case 1:
{
System.out.print("请输入一个字符(输入多个则默认为第一个):");
String a=reader.next();
char ch=a.charAt(0);//将String类型的字符转换为char型
//调用char_number函数
// 统计一个字符在字符串串中出现的次数
System.out.println("字符 '"+ ch +"' "+"出现次数为:"+char_number(ch,str));
}break;
case 2:
{
System.out.print("请输入一个字符串:");
String s=reader.next();//接收用户的字符串并赋值给s
//调用char_number函数
// 统计一个字符串在字符串串中出现的次数
System.out.println( "字符串 “ "+s+" ”"+"出现次数为: "+string_number(s,str));
}break;
case 3:
{//建立StringBuilder 类型的字符串
StringBuilder str1=new StringBuilder();
//调用capitalize函数将字符串str的每个单词的首字母变成大写
str1=capitalize(str);
System.out.println("首字母变成大写后为");
System.out.println(str1);
}break;
case 0:
{
return;
}
default:{return;}
}
}
}
//将字符串str中的每个单词的首字母变成大写
publicstatic StringBuilder capitalize(String str)
{
String words[] = str.split(" "); //将字符串str用“ ”分割,放入集合word中
StringBuilder str1=new StringBuilder();
for(int i = 0; i < words.length; i++)
{
words[i] = words[i].substring(0,1).toUpperCase() + words[i].substring(1);
//循环截取每个item的首位,然后ToUpper()将其变为大写
//words[i].substring(1)去掉字符串打头的字符
}
for(int i=0;i<words.length;i++)
{
str1.append(words[i]+" ");//将words里的字符从尾部添加给字符str1
}
return str1;//返回字符str1
}
//统计一个字符在字符串串中出现的次数
publicstaticint char_number(char ch,String str)
{
int count = 0;
//遍历整个字符串
//判断字符串是否与接受用户的字符相等
//相等即加1
for(int i=0;i<str.length();i++)
{
count = (str.charAt(i)==ch)?count+1:count;
}
return count;
//返回计数器
}
publicstaticint string_number(String a,String str)
{ int index=0;
int count=0;
//第一种调用regionMatches函数的方法实现
/*for(int i=0;i<str.length();i++)
{
if(str.regionMatches(i,a, 0, a.length()))
{
count++;
}
}
*/
//第二种调用检索函数indexOf
//每一次的位置都是上一次检索的位置的后面一位
//直到返回值为-1
while(true)
{
index = str.indexOf(a, index + 1);
if (index > 0)
{ count++; }
else
{ break; }
}
return count;
}
//主界面输出
publicstaticvoid menu()
{
System.out.println("\t(1)统计字符出现的次数");
System.out.println("\t(2)统计某字符串出现的次数");
System.out.println("\t(3)将首字母变成大写");
System.out.println("\t(4)退出");
}
}
二、实验运行结果截图
1. 第一题
2. 第二题
3. 第三题
三、实验中的错误罗列及解决办法
1、错误1:
大小写转换后字符出错
解决办法:
去掉字符串的头部后连接在一起
2、错误2
第一题输出最小值的时候回把0放在最前面
解决办法:
先从大到小排序,然后将第一个不为0 的数放在第一位
Arrays.sort(str);
for(int i=0;i<str.length;i++)
if(str[i].compareTo("0")>0)
{
String a=str[0];
str[0]=str[i];
str[i]=a;
break;
}
3. 错误3
第二篇:实验报告模板
实验1:选择结构实验
1 实验目的
1、 掌握选择结构的一般形式。
2、 掌握选择结构的使用方法。
3、 掌握多分支结构的使用方法。
4、 掌握选择结构的嵌套。 2 实验题目描述 题目自拟,要求能够体现分支结构。 3 具体分析 对题目进行分析。
4 流程图
画出程序的流程图。
5 程序实现 书写程序代码。
6 输入与输出 如果包含输入与输出在此说明。 7 思考
书写实验收获。包括实验中遇到的问题,如何进行解决等。
实验2:循环结构实验
1 实验目的
1、 掌握循环结构的一般形式。
2、 掌握循环结构的使用方法。
3、 掌握如何改变循环的状态。
4、 掌握循环结构的嵌套。 2 实验题目描述 题目自拟,要求能够体现循环结构。 3 具体分析 对题目进行分析。
4 流程图
画出程序的流程图。
5 程序实现 书写程序代码。
6 输入与输出 如果包含输入与输出在此说明。 7 思考
书写实验收获。包括实验中遇到的问题,如何进行解决等。
实验3:数组实验
1 实验目的
1、 掌握一维数组的使用方法。
2、 掌握二维数组的使用方法。
3、 掌握字符数组的使用方法。 2 实验题目描述
题目自拟,要求能够体现数组的综合内容。 3 具体分析 对题目进行分析。
4 流程图 画出程序的流程图。 5 程序实现 书写程序代码。
6 输入与输出 如果包含输入与输出在此说明。 7 思考
书写实验收获。包括实验中遇到的问题,如何进行解决等。
实验4:函数实验
1 实验目的
1、 掌握函数的定义方法。
2、 掌握调用函数的使用方法。
3、 掌握函数的递归调用。
2 实验题目描述
题目自拟,要求能够体现函数的综合内容。 3 具体分析
对题目进行分析。
4 流程图
画出程序的流程图。
5 程序实现
书写程序代码。
6 输入与输出
如果包含输入与输出在此说明。 7 思考
书写实验收获。包括实验中遇到的问题,如何进行解决等。