1、编写一个Java应用程序。用户从键盘输入一个整数,程序将判断这个数是几位数并输出其位数,并判断这个数是否是回文数(是,则输出“是回文数”,否则输出“不是回文数”)。回文数是指将该数含有的数字逆序排列后得到的数和原数相同,例如12121、3223都是回文数。要求:定义两个方法,一个用于获取一个整数的位数,一个用于返回一个整数是否为回文数。
package test1; import java.util.Scanner; public class Number { static Scanner cin = new Scanner(System.in); public static int getDigit(int value) { String s = String.valueOf(value);// 将int转为string return s.length(); } public static boolean isPalindrome(int value) { String s1 = String.valueOf(value);// 将int转为string String s2 = new StringBuffer(s1).reverse().toString();// 使用StringBuffer里的reverse方法,将s1反转 return s1.equals(s2);// 检查是否相等 } public static void main(String[] args) { int value; value = cin.nextInt(); value = Math.abs(value);// 按其绝对值计算,保证负数的正确性 System.out.println(getDigit(value));// 输出位数 System.out.println(isPalindrome(value));// 输出是否为回文数 } }
2、 在安排教师监考时,需要从一组教师中随机选取n个教师参加监考。要求实现一个类RandomTeacher的静态方法public static String[] getRandomTeachers(String[] teachers, int n),能够从teachers中随机选择n个教师(名字)并返回。
package test2; import java.util.*; public class RandomTeacher { public static String[] getRandomTeachers(String[] teachers, int n) { int teacherNum = teachers.length;// 一共有多少个老师 if (n > teacherNum) { return null; } Set<Integer> s = new HashSet<Integer>();//定义一个Set存放下标(可防止重复) while (s.size() < n) {// 选n个老师 int no = (int) (Math.random() * (teacherNum));// 随机数(0~teacherNum-1); s.add(no); } Iterator<Integer> it=s.iterator(); String[] luckteachers=new String[n]; for(int i=0;it.hasNext();i++) {//遍历set luckteachers[i]=teachers[it.next()]; } return luckteachers;// 返回这n个被选中的老师 } static Scanner cin = new Scanner(System.in); public static void main(String[] args) { int n;// 挑选n个老师 String[] teachers = new String[5];// 存所有的老师的姓名 String[] luckteachers;// 存被选到的老师的姓名 teachers[0] = ("Tom1"); teachers[1] = ("Tom2"); teachers[2] = ("Tom3"); teachers[3] = ("Tom4"); teachers[4] = ("Tom5"); // 初始化一下teachers[] n = cin.nextInt(); if(n<=0) { System.out.println("输入不合法"); } luckteachers = RandomTeacher.getRandomTeachers(teachers, n); if (luckteachers == null) { System.out.println("现有老师数量不足" + n + "个。"); } else { for (int i = 0; i < n; i++) { System.out.println(luckteachers[i]); } } } }
3、 编写一个方法,返回一个double型的二维数组,数组中的元素通过解析字符串参数获得。例如,字符串参数:“1,2;3,4,5;6,7,8”,对应的数组为:
d[0,0] = 1.0 d[0,1] = 2.0
d[1,0] = 3.0 d[1,1] = 4.0 d[1,2] = 5.0
d[2,0] = 6.0 d[2,1] = 7.0 d[2,2] = 8.0
package test3; import java.util.Arrays; import java.util.Scanner; public class DArray { static double[][] getDArray(String str) { String[] s1 = str.split(";");// 先把str按照“;”分隔开 double[][] array = new double[s1.length][];// 分配内存 for (int i = 0; i < s1.length; i++) { String[] s2 = s1[i].split(",");// 把s1[i]按照“,”分隔开 array[i] = new double[s2.length];// 分配内存 for (int j = 0; j < s2.length; j++) { array[i][j] = Double.parseDouble(s2[j]);// string转double } } // 打印并返回 for (int i = 0; i < array.length; i++) { for (int j = 0; j < array[i].length; j++) { System.out.print(array[i][j] + " "); } System.out.println(); } return array; } static Scanner cin = new Scanner(System.in); public static void main(String[] args) { String str = new String(); str = cin.nextLine();// 输入一行合法字符串 getDArray(str); } }
4、 假设某餐馆中每桌顾客点菜记录的格式为“北京烤鸭:189 西芹百合:15 清蒸鲈鱼:80”(每道菜的价格与下一道菜的名字之间有一个空格)。编写一个类的方法,能够接受键盘录入的符合上述格式的点菜内容字符串,输出点菜记录中每种菜的价格及总价格。
package test4; import java.util.*; public class Food { static Scanner cin = new Scanner(System.in); public static void main(String[] args) { String str = cin.nextLine(); // 读入一行合法字符; String[] s1 = str.split(" "); // 先按“ ”分隔开,使得每种菜独立 for (int i = 0; i < s1.length; i++) {// 输出所点的菜名和价格 System.out.println(s1[i]); } int sum = 0;// 计算总价格 for (int i = 0; i < s1.length; i++) { String[] s2 = s1[i].split(":");// 按“: ”分隔开(注意冒号是中文的) sum += Double.parseDouble(s2[1]);// s2[1]存的是价格,string转double } System.out.println(sum); } }
实验3 常用类(2学时)
最新推荐文章于 2022-10-06 01:41:49 发布