Java语言程序设计 上机实验2 掌握Java的基本语言成分和流程控制语句。 掌握Java中数组的使用,理解引用数据类型。 掌握String类的使用。
Java语言程序设计 上机实验2
实验目的:
- 掌握Java的基本语言成分和流程控制语句。
- 掌握Java中数组的使用,理解引用数据类型。
- 掌握String类的使用。
实验内容:
注:标(*)为选做内容
- 将一个十进制的数字(0~9)字符串转换成对应的整数类型值,如”12345”。
- 实现一个成员方法,以两个已排序的数组为参数,将其合并成一个新数组,并返回新数组。比如将{1,3,5,7}和{2,4,6,8}合并成{1,2,3,4,5,6,7,8}。
- 采用递归算法反转字符串,比如将str=”12345”作为参数输入给一个静态递归方法后,返回”54321”。(其中str.isEmpty()方法可以判断str字符串是否为空,返回布尔值)。
- 输出下列方阵:(n = 4)
1 2 6 7
3 5 8 13
4 9 12 14
10 11 15 16
- (*) 输出400以内的Smith数。Smith数是指满足下列条件的可分解的整数:
其所有数位上的数字和等于其全部素数因子的各位上的数字总和。
例如:9975是Smith数,9975=3*5*5*7*19,即9+9+7+5=3+5+5+7+1+9=30.
- (*) 用递归方法求n个数字(比如数组{1,2,3,4,5})的无重复全排列,并在程序中计数全排列的个数。
实验要求:
1. 在实验报告中给出程序运行结果截图。
2. 源程序代码附到实验报告的最后。
3. 认真填写实验报告并妥善存档,在下次上机实验课之前发送电子版实验报告至 wsycup@foxmail.com。
注意,“邮件标题”与“附件实验报告文件名”均为:
Java1实验报告N_学号_姓名
其中N为阿拉伯数字,指第几次实验,例如:
Java1实验报告1_ 2012010400_李雷
请严格按照规定的格式发送邮件(注意标题中“Java”后的数字“1”),否则邮件较多时可能导致混乱而被忽略,并在规定的时间发送实验报告邮件,过期无效。
4. 实验报告雷同者将不能得到相应的平时分。
附录:实验报告
实验题目_____java实验报告二_____
学号__2014011329__ 姓名__许恺_____ 班级____计算机14-1_____ 时间____2016.3.18____
实验题目解答
附:源程序
1.
1. package com.Test1; public class Test1 { /** * @param args */ public static void main(String[] args) { // TODO Auto-generated method stub String s1="213131"; int i,num=0,j; boolean ju=true; //判断能否输出 for(i=s1.length()-1,j=1;i>=0;i--,j=j*10){ num=num+(s1.charAt(i)-48)*j; //将字符从后往前转换为整型 if(s1.charAt(0)=='0'){ //判断首位是否为0 System.out.println("首位为0,有误"); ju=false; } } if(ju==true) System.out.println(num); } } 2. package com.Test2; import java.util.Arrays; public class Test2 { /** * @param args */ public static void main(String[] args) { // TODO Auto-generated method stub int a[]=new int[]{1,3,5,7}; int b[]=new int[]{2,4,6,8}; int d[]=new int[a.length+b.length]; d=add(a,b); for(int i=0;i<d.length ;i++) //输出最终数组 System.out.print(d[i]); } public static int[] add(int[] a,int b[]){ //静态数组不用新建对象 int c[]=new int[a.length+b.length]; int i,j=0; for(i=0;i<a.length;i++){ //连接两个数组 c[i]=a[i]; } for(;j<b.length;j++,i++){ c[i]=b[j]; } Arrays.sort(c); //排序连接后的数组 return c; } } 3. package com.Test3; public class Test3 { public static void main(String[] args) { // TODO Auto-generated method stub String str="12345"; if(str.isEmpty()){ System.out.println("字符串为空,有误"); } else{ System.out.println(transform(str)); } } public static String transform(String str){ char ch; ch=str.charAt(0); //剥离首字符 if(1==str.length()){ //到最后一个时返回 return str; } else{ str=transform(str.substring(1,str.length())); //递归,把下一级的值赋给上一级 str=str+ch; //倒转 } return str; } } 4. package com.emp; public class emp { public static void main(String[] args) { // TODO Auto-generated method stub int a[][]=new int[4][4]; int i=0,j=0,n=1; while(i!=3||j!=3){ if(i==0&&j==0){ a[i][j]=n; n++;j++; } else{ if(j==3){ a[i][j]=n;n++; while(i!=3){ i++;j--;a[i][j]=n;n++; } j++; } else if(i==3){ a[i][j]=n; n++; while(j!=3){ i--;j++;a[i][j]=n;n++; } i++; } else if(i==0){ a[i][j]=n;n++; while(j!=0){ i++;j--;a[i][j]=n;n++; } i++; } else if(j==0){ a[i][j]=n; n++; while(i!=0){ i--;j++;a[i][j]=n;n++; } j++; } } } a[3][3]=16; for(i=0;i<4;i++){ for(j=0;j<4;j++){ if(a[i][j]>9) System.out.print(a[i][j]+" "); else System.out.print(a[i][j]+" "); } System.out.println(); } } }