這差不多就是javaee基礎階段的題目了,我一個星期寫了1.2W行代碼,基本鞏固了,如果有興趣的朋友,可以只複製題目,不用看我的代碼,這樣一邊下來,基礎階段的編碼基本不成問題了. 補充幾個反射的題目 有什麼問題,我們共同研究,接下來,我將進入javaEE階段. ...
package com.模擬練習題一; import java.io.BufferedReader; import java.io.BufferedWriter; import java.io.FileWriter; import java.io.IOException; import java.util.ArrayList; import java.util.Scanner; /** * 1.鍵盤輸入10個數,放到數組中 a. 去除該數組中大於10的數 b. 將該數組中的數字寫入到本地文件number.txt中 * @author Administrator * */ public class Demo01 { public static void main(String[] args) throws IOException { //鍵盤輸入10個數數組 int[] arr = getArr(); //去除大於10的 int[] arr1 = remove(arr); //寫入 BufferedWriter bw = new BufferedWriter(new FileWriter("number.txt")); for (int i : arr1) { bw.write(i+" "); } bw.close(); } private static int[] remove(int[] arr) { ArrayList<Integer> list = new ArrayList<>(); for (int i = 0; i < arr.length; i++) { if(arr[i]>10){ list.add(arr[i]); } } int[] arr1 = new int[list.size()]; for (int i = 0; i < list.size(); i++) { arr1[i] = list.get(i); } return arr1; } private static int[] getArr() { System.out.println("請輸入10個整數:"); Scanner sc = new Scanner(System.in); int[] arr = new int[10]; for (int i = 0; i < arr.length; i++) { arr[i] =sc.nextInt(); } return arr; } }
package com.模擬練習題一; import java.sql.Connection; import java.sql.DriverManager; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.util.LinkedHashMap; import java.util.Map; /** * 2.map中有如下數據(電話號=套餐價格) [13265477888=168,15241698745=11,13699989898=20,1898686666=120] 在ip為127.0.0.1資料庫名為stdb,連接資料庫的用戶名和密碼為:admin和123456中有一個numinfo表相關欄位為(id,iphonenum,tomoney)(15分) (1)將map中的手機號碼取出來列印到控制臺上(3分) (2)判斷map中所有的手機號在numinfo表中是否存在存在則輸出"該主機已登錄"如果不存在將該號碼及對應的套餐價格存入到numinfo表中.(12分) (map中的數據不需要修改) * @author Administrator * */ public class Demo02 { public static void main(String[] args) throws Exception { Map<String, Integer> map = new LinkedHashMap<>(); map.put("13265477888", 168); map.put("15241698745", 11); map.put("13699989898", 20); map.put("18986886666", 120); System.out.println(map); Class.forName("com.mysql.jdbc.Driver"); Connection con = DriverManager.getConnection("jdbc:mysql://127.0.0.1:3306/mybase", "root", "123456"); PreparedStatement pstmt=null; ResultSet rs =null; for(String phone : map.keySet()){ Integer values = map.get(phone); String sql = "select * from numinfo where iphonenum=?"; pstmt = con.prepareStatement(sql); pstmt.setString(1, phone); rs = pstmt.executeQuery(); if(rs.next()){ System.out.println("以登錄"); }else{ String sql1 = "insert into numinfo(iphonenum,tomoney) values (?,?)"; pstmt = con.prepareStatement(sql1); pstmt.setString(1, phone); pstmt.setInt(2, values); int row = pstmt.executeUpdate(); if(row!=0){ System.out.println("註冊成功"); } } } con.close(); rs.close(); pstmt.close(); } }
package com.模擬練習題二; import java.io.BufferedWriter; import java.io.FileWriter; import java.io.IOException; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; /** * 1.產生10個1-100的隨機數,並放到一個數組中 (1)把數組中大於等於10的數字放到一個list集合中,並列印到控制台。 (2)把數組中小於10的數字放到一個map集合中,並列印到控制台。 (3)把數組中的數字放到當前文件夾的number.txt文件中 */ public class Demo01 { public static void main(String[] args) throws IOException { int[] arr = getRomdon(); List<Integer> list = new ArrayList<>(); Map<Integer, Integer> map = new HashMap<>(); BufferedWriter bw = new BufferedWriter(new FileWriter("number.txt")); for (int i = 0; i < arr.length; i++) { if(arr[i] >= 10){ list.add(arr[i]); }else{ map.put(i, arr[i]); } bw.write(arr[i]+" "); } System.out.println(list); System.out.println(map); bw.close(); } private static int[] getRomdon() { // TODO Auto-generated method stub int[] arr = new int[10]; for (int i = 0; i < arr.length; i++) { int num = (int) (Math.random()*100+1); arr[i]=num; } return arr; } }
package com.模擬練習題二; import java.sql.Connection; import java.sql.DriverManager; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.SQLException; /** * 2.資料庫題: 用jdbc鏈接資料庫stu,該數據中有一個表為student, 表中數據如下: id name sex score 1 李少榮 女 80 2 邵凱 男 75 3 周強 男 95 4 王曉婷 女 55 5 張秀花 女 68 6 顧會 女 50 7 趙天一 男 32 (1)查找60分以上的學生信息 (2)將男生且名字是兩個數的成績改成100。 * */ public class Demo02 { public static void main(String[] args) throws Exception { Class.forName("com.mysql.jdbc.Driver"); Connection con = DriverManager.getConnection("jdbc:mysql://localhost:3306/mybase","root","123456"); // query(con); update(con); } private static void update(Connection con) throws SQLException { // TODO Auto-generated method stub String sql = "update student set score=100 where name like'__' and sex='男'"; PreparedStatement pstmt = con.prepareStatement(sql); int row = pstmt.executeUpdate(sql); System.out.println(row); } private static void query(Connection con) throws SQLException { // TODO Auto-generated method stub String sql = "select * from student where score>60"; PreparedStatement pstmt = con.prepareStatement(sql); ResultSet rs = pstmt.executeQuery(); int count = rs.getMetaData().getColumnCount(); while(rs.next()){ for (int i = 1; i <= count; i++) { System.out.print(rs.getString(i)); if(i<count){ System.out.print(","); } } System.out.println(); } rs.close(); pstmt.close(); con.close(); } }
package com.模擬練習題三; import java.util.Scanner; /** * 1.設計一個程式,鍵盤輸入月份,控制條輸出季節.3,4,5春季/6,7,8夏季/9,10,11秋季/12,1,2冬季 * @author Administrator * */ public class Demo01 { public static void main(String[] args) { System.out.println("請輸入月份"); Scanner sc = new Scanner(System.in); int num = sc.nextInt(); if(num>=1 && num<=12){ if(num>=3 && num<=5){ System.out.println("春季"); } if(num>=6 && num<=8){ System.out.println("夏季"); } if(num>=9 && num<=11){ System.out.println("秋季"); } if(num==12 || num<=2){ System.out.println("冬季"); } }else System.out.println("你輸入的月份不存在"); } }
package com.模擬練習題三; import java.io.BufferedWriter; import java.io.FileWriter; import java.io.IOException; import java.util.ArrayList; import java.util.Collections; import java.util.List; /** * 2.向list集合添加姓名{張三,李四,王五,二丫,錢六,孫七},將二丫替換為王小丫,寫入到"D:\\stuinfo.txt" * @author Administrator * */ public class Demo02 { public static void main(String[] args) throws IOException { List<String> list = new ArrayList<>(); Collections.addAll(list, "張三","李四","王五","二丫","錢六","孫七"); BufferedWriter bw = new BufferedWriter(new FileWriter("stuinfo.txt")); for (int i = 0; i < list.size(); i++) { //判斷集合中的元素有沒有等於"二丫"的改成王二牙 if(list.get(i).equals("二丫")){ list.set(i, "王二丫"); //改過後寫入文件中 bw.write(list.get(i)+" "); //跳出本次迴圈,不然會被寫入兩次,if外還在迴圈寫入 continue; } bw.write(list.get(i)+" "); } //釋放資源 bw.close(); } }
package com.模擬練習題三; import java.sql.Connection; import java.sql.DriverManager; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.SQLException; /** * 3.一個資料庫stu,用戶名為admin 密碼為123456 已存在一個表中有五個學生的信息,姓名,性別,年齡,分數. id name sex score 1 李少榮 女 80 2 邵凱 男 75 3 周強 男 95 4 王曉婷 女 55 5 張秀花 女 68 6 顧會 女 50 7 趙天一 男 32 (1)查詢女性,成績80以上 (2)將姓張的男同學的的成績改為100 (3)查詢年齡大於20的女性,顯示姓名,性別,年齡 * @author Administrator * */ public class Demo03 { public static void main(String[] args) throws Exception { //載入驅動類 Class.forName("com.mysql.jdbc.Driver"); //接連資料庫 Connection con =DriverManager.getConnection("jdbc:mysql://localhost:3306/mybase", "root", "123456"); // query(con); // update(con); queryse(con); } private static void queryse(Connection con) throws SQLException { String sql = "select * from student where score>50 and sex='女'"; PreparedStatement pstmt = con.prepareStatement(sql); ResultSet rs = pstmt.executeQuery(); while(rs.next()){ System.out.println(rs.getString("name")+","+rs.getString("sex")+","+rs.getString("score")); } } private static void update(Connection con) throws SQLException { // TODO Auto-generated method stub String sql ="update student set score=100 where name like'趙%' and sex='男'"; PreparedStatement pstmt = con.prepareStatement(sql); int row = pstmt.executeUpdate(); System.out.println(row); } private static void query(Connection con) throws SQLException { // TODO Auto-generated method stub String sql = "select * from student where score>80 and sex='女'"; PreparedStatement pstmt = con.prepareStatement(sql); ResultSet rs = pstmt.executeQuery(); int count = rs.getMetaData().getColumnCount(); while(rs.next()){ for (int i = 1; i <= count; i++) { System.out.print(rs.getString(i)); if(i<count){ System.out.print(","); } } System.out.println(); } rs.close(); pstmt.close(); con.close(); } }
package com.模擬練習題四; import java.io.BufferedInputStream; import java.io.BufferedOutputStream; import java.io.BufferedReader; import java.io.BufferedWriter; import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.FileReader; import java.io.FileWriter; import java.io.IOException; import java.util.Scanner; /** *2.從控制台獲取輸入的文件目錄然後將指定目錄下的.java文件複製到D:/java文件夾中 * @author Administrator */ public class Demo02 { public static void main(String[] args) throws IOException { File file = getFile(); File dest = new File("D:\\java"); if(!dest.exists()){ dest.mkdirs(); } copy(file,dest); } private static void copy(File file, File dest) throws IOException { // TODO Auto-generated method stub File[] files = file.listFiles(); if(files!=null){ for (File file2 : files) { //判斷是否是文件 在判斷段結尾是否是.java if(file2.isFile() && file2.getName().toLowerCase().endsWith(".java")){ BufferedInputStream br = new BufferedInputStream(new FileInputStream(file2)); BufferedOutputStream bw = new BufferedOutputStream(new FileOutputStream(new File(dest,file2.getName()))); byte[] by = new byte[1024]; int len = 0; while((len=br.read())!=-1){ bw.write(by, 0, len); } br.close(); bw.close(); }else if(file2.isDirectory()){ copy(file2, dest); } } } } private static File getFile() { // TODO Auto-generated method stub System.out.println("請輸入一個文件夾路徑"); Scanner sc = new Scanner(System.in); String str =sc.nextLine(); File file = new File(str); while(true){ if(!file.exists()){ System.out.println("你輸入的文件夾路徑不存在,請重新輸入"); }else if(file.isFile()){ System.out.println("你輸入的是文件路徑,請重新輸入"); }else{ return file; } } } }
package com.模擬練習題五; /** * 1.寫一個賣票的程式, 1.寫一個類,該類實現了Runnable介面.有一個私有類型的int作為參數tickets. 票的總數為100,完成run方法,輸出結果的格式如下: 當前視窗為:視窗a,剩餘票數為19,其中視窗a為線程的名字 2.開啟四個賣票視窗(開始四個線程),同時執行賣票的程式 * @author Administrator * */ public class Demo01 { public static void main(String[] args) { Tick t = new Tick(); new Thread(t,"線程A").start(); new Thread(t,"線程B").start(); new Thread(t,"線程C").start(); new Thread(t,"線程D").start(); } } class Tick implements Runnable{ static int tickers =100; @Override public void run() { while(true){ synchronized (this) { String name = Thread.currentThread().getName(); //如果票數小於0 4條線程依次結束 if(tickers<=0){ return; } try { Thread.sleep(30); if(name.equals("線程A")){ System.out.println(name+"賣出了"+(100-tickers+1)+"票,還有"+--tickers); } if(name.equals("線程B")){ System.out.println(name+"賣出了"+(100-tickers+1)+"票,還有"+--tickers); } if(name.equals("線程C")){ System.out.println(name+"賣出了"+(100-tickers+1)+"票,還有"+--tickers); } if(name.equals("線程D")){ System.out.println(name+"賣出了"+(100-tickers+1)+"票,還有"+--tickers); } } catch (InterruptedException e) { // TODO Auto-generated catch block e.printStackTrace(); } } } } }
package com.模擬練習題五; import java.io.BufferedReader; import java.io.BufferedWriter; import java.io.FileNotFoundException; import java.io.FileReader; import java.io.FileWriter; import java.io.IOException; import java.util.ArrayList; import java.util.Collections; import java.util.List; /** * 2.給定一個list集合:{"張柏芝","劉德華","張亮","張靚穎","楊穎","黃曉明"} 1.編寫一個方法:將list集合中所有姓張的人員寫入到D:\\a.txt中 2.編寫一個方法:將D:\\a.txt中所有姓張的人員信息讀取出來並列印到控制臺上 * @author Administrator * */ public class Deme02 { public static void main(String[] args) throws IOException { List<String> list = new ArrayList<>(); Collections.addAll(list, "張柏芝","劉德華","張亮","張靚穎","楊穎","黃曉明"); writer(list); read(list); } private static void read(List<String> list) throws IOException { // TODO Auto-generated method stub BufferedReader br = new BufferedReader(new FileReader("a.txt")); String line = br.readLine(); System.out.println(line); br.close(); } private static void writer(List<String> list) throws IOException { BufferedWriter bw = new BufferedWriter(new FileWriter("a.txt")); // TODO Auto-generated method stub for (int i = 0; i < list.size(); i++) { if(list.get(i).substring(0, 1).equals("張")){ bw.write(list.get(i)+" "); } } bw.close(); } }
package com.模擬練習題六; import java.io.BufferedWriter; import java.io.FileWriter; import java.io.IOException; import java.util.Scanner; /** * 1.將用戶在控制臺上輸出的5個數字按照大小順序存入到D:\\xx.txt中,並讀出顯示在控制臺上 * @author Administrator * */ public class Demo01 { public static void main(String[] args) throws IOException { //固定數組大小 int[] arr = new int[5]; //鍵盤輸入 Scanner sc = new Scanner(System.in); //迴圈輸入 for (int i = 0; i < arr.length; i++) { arr[i] = sc.nextInt(); } //冒泡排序 for (int i = 0; i < arr.length-1; i++) { for (int j = 0; j < arr.length-1-i; j++) { if(arr[j]>arr[j+1]){ int temp = arr[j]; arr[j] = arr[j+1]; arr[j+1] = temp; } } } //從緩衝區寫入 BufferedWriter bw = new BufferedWriter(new FileWriter("xx.txt")); for (int i : arr) { bw.write(i+" "); } bw.close(); } }
package com.模擬練習題六; import java.util.LinkedHashMap; import java.util.Map; /** * 2.現在有一個map集合如下: {1="張三豐",2="周芷若",3="汪峰",4="滅絕師太"} 要求: 1.將map集合中的所有信息顯示到控制臺上 2.向該map集合中插入一個編碼為5姓名為李曉紅的信息 3.移除該map中的編號為1的信息 4.將map集合中編號為2的姓名信息修改為"周林" * @author Administrator * */ public class Demo02 { public static void main(String[] args) { Map<Integer, String> map = new LinkedHashMap<>(); map.put(1, "張三豐"); map.put(2, "周芷若"); map.put(3, "汪峰"); map.put(4, "滅絕師太"); System.out.println(map); map.put(5, "李小紅"); map.remove(1); map.put(2, "周林"); System.out.println(map); } }
package com.模擬練習題六; import java.sql.Connection; import java.sql.DriverManager; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.util.Scanner; /** * 3.在ip為127.0.0.1的主機上有一個MySql的資料庫,資料庫名為db1. 連接資料庫的用戶名和密碼為root和123,該資料庫中有一個表格為user, 表中的數據如下: id username password 1 abc 123 2 def 456 3 ghi 789 請使用JDBC技術完成一個登錄的案例(在控制台輸入用戶名和密碼)登陸成功在控制台顯示登錄成功 * @author Administrator * */ public class Demo03 { public static void main(String[] args) throws Exception { Class.forName("com.mysql.jdbc.Driver"); Connection con = DriverManager.getConnection("jdbc:mysql://localhost:3306/mybase", "root", "123456"); Scanner sc = new Scanner(System.in); System.out.println("請輸入用戶名:"); String name = sc.nextLine(); System.out.println("請輸入密碼:"); String pass = sc.nextLine(); String sql = "select * from user where username=? and password=?"; PreparedStatement pstmt = con.prepareStatement(sql); pstmt.setString(1, name); pstmt.setString(2, pass); ResultSet rs = pstmt.executeQuery(); if(rs.next()){ System.out.println("登錄成功"); }else{ System.out.println("用戶名密碼錯誤"); } } }
package com.模擬練習題七; /** * 2.有100份禮品,兩人同時發送,當剩下的禮品小於10份的時候則不再送出,利用多線程模擬該過程並將線程的名稱列印出來. * @author Administrator * */ public class Demo02 { public static void main(String[] args) { pack p = new pack(); new Thread(p,"線程A").start(); new Thread(p,"線程B").start(); } } class pack implements Runnable{ static int number = 100; @Override public void run() { // TODO Auto-generated method stub while(true){ synchronized (this) { //小於0 聊天線程依次return if(number<=10){ return; } try { //獲取線程名字數 String name = Thread.currentThread().getName(); //判斷是不是這個線程 if(name.equals("線程A")){ System.out.println(name+"發出了第"+(100-number+1)+"個,還有"+--number); } //睡眠30毫秒 Thread.sleep(30); if(name.equals("線程B")){ System.out.println(name+"發出了第"+(100-number+1)+"個,還有"+--number); } } catch (InterruptedException e) { e.printStackTrace(); } } } } }
package com.模擬練習題七; import java.util.HashMap; import java.util.Map; import java.util.Scanner; /** * *3.取出一個字元串中字母出現的次數。如:字元串:"abcdekka27qoq" , * 輸出格式為:a(2)b(1)k(2)... * @author Administrator * */ public class Demo03 { public static void main(String[] args) { Scanner sc = new Scanner(System.in); //鍵盤接收有個字元串 String str = sc.nextLine(); //裝換為字元數組 char[] ch = str.toCharArray(); //包含加1 不包含為1 Map<Character, Integer> map = new HashMap<>(); for (char c : ch) { map.put(c, !map.containsKey(c)? 1:map.get(c)+1); } //列印格式 for(Character ch1 : map.keySet()){ System.out.println(ch1+"("+map.get(ch1)+")"); } } }
package com.模擬練習題八; import java.io.BufferedWriter; import java.io.FileWriter; import java.io.IOException; import java.util.ArrayList; import java.util.Scanner; /** * 3.從鍵盤接受多個int型的整數,直到用戶輸入end結束 要求:把所有的整數按倒序寫到D:\\number.txt中 * @author Administrator * */ public class Demo03 { public static void main(String[] args) throws IOException { ArrayList<Integer> list = getScaaner(); System.out.println(list); //冒泡排序 for (int i = 0; i < list.size()-1; i++) { for (int j = 0; j < list.size()-1-i; j++) { int one = list.get(j); int two = list.get(j+1); if(one<two){ list.set(j, two); list.set(j+1, one); } } } //遍歷直接從緩衝區寫入 BufferedWriter bw = new BufferedWriter(new FileWriter("number.txt")); for (int i = 0; i < list.size(); i++) { bw.write(list.get(i)+" "); } bw.close(); } private static ArrayList<Integer> getScaaner() { System.out.println("請輸入整數"); Scanner sc = new Scanner(System.in); //建一個集合用來接收鍵盤輸入的字元串 ArrayList<Integer> list = new ArrayList<>(); //用正則判斷輸入的是否是整數+號表示多個的意思 String regex = "[0-9]+"; while(true){ //如果輸入的數是end就結束 String num = sc.next(); if((num).equals("end")){ System.out.println("結束"); return list; }else if(num.matches(regex)){ list.add(Integer.parseInt(num)); }else{ System.out.println("輸入的不是整數"); } } /*System.out.println("請輸入整數:"); Scanner sc = new Scanner(System.in); ArrayList<Integer> list = new ArrayList<>(); while(true){ String num = sc.next(); if(num.equals("end")){ return list; }else{ list.add(Integer.parseInt(num)); } }*/ } }
package com.模擬練習題八; import java.util.Scanner; /* * 1.編寫一個校驗用戶名的程式,檢測鍵盤錄入的用戶名是否合法 要求:用戶名必須是6-10位之間的字母並且不能以數字開頭 */ public class Demo01 { public static void main(String[] args) { //鍵盤接收一條字元串 String str = new Scanner(System.in).nextLine(); //正則表達式 前面開頭是a-zA-Z ,{5,9}個 String regex = "[a-zA-Z][a-zA-Z0-9]{5,9}"; //判斷是否符合正則表達式 if(str.matches(regex)){ System.out.println("輸入的是正確的"); }else{ System.out.println("格式錯誤"); } //第二種方法 que(str); } private static void que(String str) { //字元串裝換為字元數組 char[] ch = str.toCharArray(); //控制6-10個數 if(ch.length>=6 && ch.length<=10){ //判斷是否是數字開頭 if(ch[0]>='0' && ch[0]<='9'){ System.out.println("格式錯誤"); }<