《JAVA习题》word版.doc
实验2要求输入两个整数,输出这两个整数的和、差、积、商import javax.swing.JOptionPane; / program uses JOptionPanepublic class P2 / main method begins execution of Java application public static void main( String args ) String firstNumber; / first string entered by user String secondNumber; / second string entered by user int number1; int number2; int he,cha,ji,shang; / read in first number from user as a string firstNumber = JOptionPane.showInputDialog( "Enter first integer" ); / read in second number from user as a string secondNumber = JOptionPane.showInputDialog( "Enter second integer" ); / convert numbers from type String to type int number1 = Integer.parseInt( firstNumber ); number2 = Integer.parseInt( secondNumber ); he = number1 + number2; cha= number1 - number2; ji = number1 * number2; shang=number1 / number2; / display result System.out.println("和是:" + he+"n差是:"+cha+"n积是:" + ji+"n商是:"+shang); JOptionPane.showMessageDialog( null, "和是:" + he+"n差是:"+cha+"n积是:" + ji+"n商是:"+shang, "Results", JOptionPane.PLAIN_MESSAGE ); System.exit( 0 ); / terminate application with window / end method main / end class Addition实验31、 编写一个应用程序,要求用户输入一个圆的半径(double类型),然后计算并输出圆的直径、周长、面积等信息。(把一个字符串转换为double类型数据的方法为Double.parseDouble(String s))import javax.swing.JOptionPane;import java.text.DecimalFormat;public class P3_1public static void main(String args)String r;r=JOptionPane.showInputDialog("请输入一个圆的半径:");double radius;radius=Double.parseDouble(r);double zhijing,l,s;final double P=Math.PI;zhijing=2*radius;l=2*P*radius;s=P*Math.pow(radius,2);DecimalFormat f=new DecimalFormat("0.00");/System.out.println ("圆的半径是:"+radius+"n"+"直径是:"+zhijing+"n周长是:"+f.format(l)+"n面积是:"+f.format(s);JOptionPane.showMessageDialog(null,"圆的半径是:"+radius+"n"+"直径是:"+zhijing+"n周长是:"+f.format(l)+"n面积是:"+f.format(s),"显示结果",JOptionPane.INFORMATION_MESSAGE);2、编写一个应用程序,要求用户输入两个整数,然后输出两个整数中的最大值。import javax.swing.JOptionPane;public class P3_2public static void main(String args)String s1,s2;s1=JOptionPane.showInputDialog("请输入第一个整数:");s2=JOptionPane.showInputDialog("请输入第二个整数:");int n1,n2;n1=Integer.parseInt(s1);n2=Integer.parseInt(s2);int max;max=n1>n2?n1:n2;System.out.println (n1+"和"+n2+"的最大值是:"+max);实验四1、 输入一个年份,一个月份(使用一个BufferedReader),判断该年该月有多少天(使用switch,注意要判断2月是多少天)import java.io.*;public class P4_1public static void main(String args)throws IOExceptionString s1,s2;int year,month;BufferedReader br=new BufferedReader(new InputStreamReader(System.in);System.out.print("请输入一个年份:");s1=br.readLine();System.out.print ("请输入一个月份:");s2=br.readLine();year=Integer.parseInt(s1);month=Integer.parseInt(s2);switch(month)case 1:case 3:case 5:case 7:case 8:case 10:case 12:System.out.println (year+"年"+month+"月"+"有31天");break;case 4:case 6:case 9:case 11:System.out.println (year+"年"+month+"月"+"有30天");break;case 2:if(year%4=0&&year%100!=0)|(year%400=0)System.out.println (year+"年"+month+"月"+"有29天");elseSystem.out.println (year+"年"+month+"月"+"有28天");break;default:System.out.println ("你输入的月份是错误的!");2、 如果一个数按反向顺序放置后仍然与原数相等,称为回文数(如: 12321)。编程:输入一个5位数,判断此数是否为回文数。import java.io.*;public class P4_2public static void main(String args)throws IOExceptionBufferedReader br=new BufferedReader(new InputStreamReader(System.in);System.out.print("请输入一个5位数:");String s1=br.readLine();int n=Integer.parseInt(s1);int n1,n2,n3,n4,n5;n1=n/10000;/n2=(n-10000*n1)/1000;n2=n%10000/1000;n3=n%1000/100;n4=n%100/10;n5=n%10;if(n1=n5&&n2=n4)System.out.println (n+"是回文数。");elseSystem.out.println (n+"不是回文数。");实验53、 求 S=a+aa+aaa+aaaaa 之值,其中a是一个数字。例如:2+22+222+2222+22222(此时n=5), a和n要求用户由键盘输入。(有规律的式子求和,注意找到前后两项之间的关系,该题中后一项等于前一项的10倍加a)import java.io.*;public class P5_1public static void main(String args)throws IOExceptionBufferedReader br=new BufferedReader(new InputStreamReader(System.in);String s1,s2;System.out.print("请输入一个1-9的数字:");s1=br.readLine();System.out.print("请输入项数:");s2=br.readLine();int a,n;a=Integer.parseInt(s1);n=Integer.parseInt(s2);int p=0,sum=0;for(int i=1;i<=n;i+)p=p*10+a;sum+=p;for(int i=1;i<=n;i+)for(int j=1;j<=i;j+)System.out.print(a);if(i<n)System.out.print("+");else if(i=n)System.out.print("=");System.out.println (sum);4.编写一个应用程序,要求用户输入5个整数(使用循环结构),输出这五个整数的最大值和最小值。import java.io.*;public class P5_2public static void main(String args)throws IOExceptionBufferedReader br=new BufferedReader(new InputStreamReader(System.in);String s;int max=Integer.MIN_VALUE,min=Integer.MAX_VALUE;int i=1;while(i<=5)System.out.print("请输入一个整数:");s=br.readLine();int n=Integer.parseInt(s);if(n>max)max=n;if(n<min)min=n;i+;System.out.println ("max="+max+" min="+min);实验六1、 编程:输入一个字符串,按相反顺序输出该字符串。如输入abcd,输出dcba。要求:(1)按相反顺序输出该字符串的过程编写为方法;(2)用户输入一个字符串后,按回车输出结果后,用户还能够继续输入新的字符串(直到输入0停止)备注:判断一个字符串s和“0”是否相等不能用运算符“”或“!”,应该使用方法s.equals(“0”),如果s和“0”相等,则该方法返回true,否则该方法返回false。import java.io.*;public class P6_1public static String reverse2(String a)int n=a.length();String s=""for(int i=n-1;i>=0;i-)s+=a.charAt(i);return s;public static void reverse(String a)int n=a.length();for(int i=n-1;i>=0;i-)System.out.print(a.charAt(i);System.out.println ();public static void main(String args)throws IOExceptionBufferedReader br=new BufferedReader(new InputStreamReader(System.in);String s;doSystem.out.print("请输入一个字符串:");s=br.readLine();if(s.equals("0")break;elseP6_1.reverse(s);while(s.equals("0")=false);2、编写一个静态方法用于求任意两个正整数的最大公约数,调用此方法求16和24的最大公约数。备注:求最大公约数使用辗转相除法,我国古代数学家秦九韶1247年在数书九章中记载了此方法,其处理过程如下:(1)提供两个数m和n(2)以n除m,求得余数r(r=m%n)(3)判断r是否为0,若r=0,此时的n值即为最大公约数,计算结束。若r0,更新被除数和除数,n送m(即m=n),r送n(即nr),转到(2)。public class P6_2public static int factor(int n,int m)int r=m%n;while(r!=0)m=n;n=r;r=m%n;return n;public static void main(String args)int n=P6_2.factor(16,24);System.out.println (n);实验七1,编写递归方法gcd,返回x和y的最大公约数。x和y的最大公约数方法gcd的递归定义如下:如果y等于0,则gcd(x,y)就是x;否则,gcd(x,y)就等于gcd(y,x%y),其中“%”是求模运算符。public class P7_1public static int gcd(int x,int y)if(y=0)return x;elsereturn gcd(y,x%y);public static void main(Stringargs)int k=10,m=80;int n=gcd(k,m);System.out.println (n);2,编写递归方法 getPower(int x,int y),用于计算x的y次幂,在main主方法中调用它求2的10次幂。public class P7_2public static int getPower(int x,int y)if(y=1)return x;elsereturn x*getPower(x,y-1);public static void main(Stringargs)System.out.println (P7_2.getPower(2,10);3、n从键盘输入,n是一个小于10的数。编写一个方法public static void shuChu(int n)用循环语句输出如下图所示的n行三角形图形。提示:使用字母的ACSII码输出该字母,字母A对应65,字母B对应66 A BBB CCCCC DDDDDDD import java.io.*;public class P7_3public static void shuChu(int n)for(int i=1;i<=n;i+)for(int j=1;j<=n-i;j+)System.out.print(" ");for(int j=1;j<=2*i-1;j+)System.out.print(char)(64+i);System.out.println ();public static void main(Stringargs)throws IOExceptionBufferedReader br=new BufferedReader(new InputStreamReader(System.in);System.out.print("请输入n的值:");String s=br.readLine();int n=Integer.parseInt(s);P7_3.shuChu(n);实验八1、 定义一个数组来存储12个学生的成绩72,89,65,58,87,91,53,82,71,93,76,68,计算并输出学生的平均成绩。(要求:计算平均成绩的过程定义为方法)import java.text.DecimalFormat;public class P8_1static double ave(int n)int sum=0;for(int i=0;i<n.length;i+)sum=sum+ni;double a=(double)(sum)/n.length;DecimalFormat f=new DecimalFormat("0.00");return Double.parseDouble(f.format(a);public static void main(Stringargs)int score=72,89,65,58,87,91,53,82,71,93,76,68;System.out.println (P8_1.ave(score);2、 定义一个数组来存储12个学生的成绩72,89,65,58,87,91,53,82,71,93,76,68,统计各成绩等级(90分以上为A,8089分为B,7079分为C,6069分为D,60分以下为E)学生人数,并将其放入到数组count中,其中:count0存E级的人数,count1存D级的人数,count4存A级的人数。(提示:注意要找到各分数段同数组count的下标的关系)public class P8_2public static void main(Stringargs)int score=72,89,65,58,87,91,53,82,71,93,76,68;int count=new int5;for(int i=0;i<score.length;i+)if(scorei=100)count4+;else if(scorei<60)count0+;elsecountscorei/10-5+;for(int i=0;i<count.length;i+)System.out.println (char)(69-i)+"t"+counti);3、 从键盘输入10个整数,将奇数和偶数分别存入到两个不同的数组中,并按奇数、偶数交替的顺序输出这两个数组中的所有数据(先交替输出,如果奇数个数多,则再输出剩下的奇数,如果偶数个数多,则再输出剩下的偶数)。(提示与要求:(1)定义一个数组存储从键盘输入的10个整数,先判断这10个整数中奇数和偶数的个数,才能定义存储奇数和偶数的数组的长度;(2)把分拣奇数和偶数并交替输出的过程定义为方法)import java.io.*;public class P8_3public static void output(int n)int even,odd;int a=0,b=0;for(int i=0;i<n.length;i+)if(ni%2=0)a+;elseb+;even=new inta;odd=new intb;int j=0,k=0;for(int i=0;i<n.length;i+)if(ni%2=0)evenj=ni;j+;elseoddk=ni;k+;if(b<a)for(int i=0;i<b;i+)System.out.print(oddi+" "+eveni+" ");for(int i=b;i<a;i+)System.out.print(eveni+" ");elsefor(int i=0;i<a;i+)System.out.print(oddi+" "+eveni+" ");for(int i=a;i<b;i+)System.out.print(oddi+" ");System.out.println ();public static void main(Stringargs)throws IOExceptionBufferedReader br=new BufferedReader(new InputStreamReader(System.in);int n=new int10;int i=0;while(i<=9)System.out.print("请输入第"+i+"个整数:");String s=br.readLine();ni=Integer.parseInt(s);i+;P8_3.output(n);4、 学习理解冒泡排序、选择排序和二分查找。修改老师课件“第六讲”文件夹中的BinarySearch.java,要求其中的方法static void bubbleSort(int data)把数组按降序排列,并相应修改二分查找的方法static int binarySearch(int data,int key)。5、 实现如下的排序算法:有一种简单的排序方法叫计数排序法,这种排序算法对一个待排序的数组进行排序,并将排序结果放到另一个新的数组中。计数排序算法针对待排序数组中的每个数据,扫描待排序的数组一趟,统计待排序数组中有多少个数据的值比该数据的值小。假设针对某一个记录,统计出的计数值为c,那么,这个记录在新的有序数组中的合适的存放位置即为c。(提交作业)程序