實驗3 常用類(2學時)
阿新 • • 發佈:2019-01-24
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); } }