01減肥計劃switch版本java
02減肥計劃if版本編程
03逢七跳過數組
04不死神兔app
05百錢白雞dom
06數組元素求和ide
07判斷兩個數組是否相同學習
08查找元素在數組中的索引測試
09數組元素反轉ui
10評委打分this
11統計字符串中大小寫及數字個數
12求三個整數最大值
13判斷數組中是否包含2
14篩選出其中的數字和字母並按照數字在前字母在後的規則排序
15隨機生成雙色球
16產生隨機生成驗證碼
17.楊輝三角
18程序比較誰的年齡大
19鍵盤輸入3本書按照價格從低到高排序後輸出,若是價格相同則按照書名的天然順序排序
20使用TreeMap集合保存勞模信息,要求以勞模對象爲鍵,家庭住址爲值,並按照勞模的年齡從大到小排序後輸出
package com.itheima._01減肥計劃switch版本;
import java.util.Scanner;
/**
課前說明:
目標:今天一天都是講解編程思惟相關的題目,有必定的難度。
編程思惟:必定是長期的代碼訓練和書寫造成的。
今天的學習目標:理解代碼的執行流程和解決思路便可!
全部的問題的解決:寫代碼、寫代碼、寫代碼。
案例需求:
輸入星期數,顯示今天的減肥活動 週一:跑步 週二:游泳 週三:慢走 週四:動感單車 週五:拳擊
週六:登山 週日:好好吃一頓。
分析步驟:
單值匹配案例,咱們直接使用switch。
一、使用掃描器類接收用戶輸入的星期數。
二、使用switch分支判斷用戶輸入的星期數而後匹配具體分支結果輸出便可。
*/
public class ExecDemo {
public static void main(String[] args) {
// 一、使用掃描器類接收用戶輸入的星期數。
Scanner sc = new Scanner(System.in);
System.out.print("請您輸入星期數:");
// 在這行代碼這裏暫停,而後等待用戶輸入星期後,按了確認鍵,這裏就開始掃描用戶輸入的星期數交給weekDay
String weekDay = sc.nextLine();
// 2.使用switch分支判斷用戶輸入的星期數而後匹配具體分支結果輸出便可。
switch (weekDay) {
case "週一":
System.out.println("跑步🏃");
break;
case "週二":
System.out.println("游泳🏊");
break;
case "週三":
System.out.println("慢走");
break;
case "週四":
System.out.println("動感單車");
break;
case "週五":
System.out.println("拳擊");
break;
case "週六":
System.out.println("登山");
break;
case "週日":
System.out.println("好好吃一頓!");
break;
default:
System.err.println("您輸入的數據有誤!");
}
}
}
package com.itheima._02減肥計劃if版本;
import java.util.Scanner;
/**
案例需求:
輸入星期數,顯示今天的減肥活動 週一:跑步 週二:游泳 週三:慢走 週四:動感單車 週五:拳擊
週六:登山 週日:好好吃一頓。
分析步驟:
單值匹配案例,咱們也可使用if。(仍是建議用switch更加合適!)
一、使用掃描器類接收用戶輸入的星期數。
二、使用if分支判斷用戶輸入的星期數而後匹配具體分支結果輸出便可。
小結:
單值匹配仍是用switch吧。
*/
public class ExecDemo {
public static void main(String[] args) {
// 一、使用掃描器類接收用戶輸入的星期數。 // ALT +ENTER導入包!
Scanner sc = new Scanner(System.in);
System.out.print("請您輸入星期整數(0-6):");
// 在這行代碼這裏暫停,而後等待用戶輸入星期後,按了確認鍵,這裏就開始掃描用戶輸入的星期數交給weekDay
// String weekDay = sc.nextLine(); // == 不建議判斷字符串的比較!
int weekDay = sc.nextInt(); // ==適合作基本數據類型的比較!
// 2.使用if分支判斷用戶輸入的星期數而後匹配具體分支結果輸出便可。
if(weekDay == 0){
System.out.println("好好吃一頓");
}else if(weekDay == 1){
System.out.println("跑步");
}else if(weekDay == 2){
System.out.println("游泳");
}else if(weekDay == 3){
System.out.println("慢走");
}else if(weekDay == 4){
System.out.println("動感單車");
}else if(weekDay == 5){
System.out.println("拳擊");
}else if(weekDay == 6){
System.out.println("登山");
}else{
System.err.println("您的星期數據輸入有誤!");
}
}
}
package com.itheima._03逢七跳過;
/**
案例需求:
朋友聚會的時候可能會玩一個遊戲:逢七過。 規則是:從任意一個數字開始報數,當你要報的數字包
含7或者是7的倍數時都要說:過。 爲了幫助你們更好的玩這個遊戲,這裏咱們直接在控制檯打印出1-
100之間的知足逢七必過規則的數據。 這樣,你們未來在玩遊戲的時候,就知道哪些數據要說:過
分析步驟:
分析主幹:從1-100中找出包含7以及是7的倍數的那些數據輸出!
一、先定義一個循環依次訪問到1-100之間的數據。 2 3 4 5 6 .... 99
二、判斷當前數據是否包含7或者是不是7的倍數,若是是,輸出該數據。
*/
public class ExecDemo {
public static void main(String[] args) {
// 一、先定義一個循環依次訪問到1-100之間的數據。 2 3 4 5 6 .... 99
for(int i = 2 ; i <= 99 ; i++) {
// i = 2 3 4 5 6 .... 98 99
// 2.判斷當前數據是否包含7或者是不是7的倍數,若是是,輸出該數據。 7
// 個位: i % 10
// 十位: i /10
if(i % 10 == 7 || i /10 == 7 || i % 7 == 0 ){
System.out.print(i+" ");
}
}
}
}
package com.itheima._04不死神兔;
/**
案例需求:
有一對兔子,從出生後第3個月起每月都生一對兔子,小兔子長到第三個月後每月又生一對兔子,
假如兔子都不死,問第二十個月的兔子對數爲多少?
分析步驟:
技巧:概括推敲、總結規律,寫代碼實現。
概括推敲:
月份: 0 1 2 3 4 5 6
對數: 1 1 2 3 5 8 13
總結規律:
從第三個月開始,每月的對數都是前兩個月的對數的和。
寫代碼實現:
1.定義一個數組存儲20個月份的兔子對數。
2.爲數組的第一個位置和第二個位置都賦值成1,從數組的第3個位置開始遍歷。
3.爲每一個位置賦值成它的前兩個元素的數據的總和: nums[i] = nums[i-1] + nums[i-2]
小結:
概括推敲:先本身手工算出幾個。
總結規律:代碼寫多了就有了經驗
編碼實現:
*/
public class ExecDemo {
public static void main(String[] args) {
// 1.定義一個數組存儲20個月份每月的兔子對數
int[] nums = new int[20];
// 2.爲數組的第一個位置和第二個位置都賦值成1.
// nums[0] = 1 ;
// nums[1] = 1 ;
nums[0] = nums[1] = 1 ; // 以上簡化寫法。
// nums = [1 , 1 , ..........]
// 3. 從第三個元素開始爲每一個位置賦值成它的前兩個元素的數據的總和。
for(int i = 2 ; i < nums.length ; i++ ){
// i = 0 1 [2] 3
// 當前元素的元素值賦值成 = 前兩個位置的元素和。
nums[i] = nums[i-1] + nums[i-2];
}
// 4.輸出第20個月的對數
System.out.println("第20個月的兔子數據是:"+nums[19]);
// 做業:輸出每月的兔子對數,並按照如上格式輸出!
}
}
package com.itheima._05百錢白雞;
/**
百錢買百:
我國古代數學家張丘建在《算經》一書中提出的數學問題:雞翁一值錢五,雞母一值錢三,雞雛三值錢
一。 百錢買百雞,問雞翁、雞母、雞雛各幾何?
分析步驟:
分析主幹: 雞翁一隻5塊,雞母一隻3塊,三隻雞雛1塊,請問100塊能夠買多少組合,最終的雞數必須也是100只!
分析步驟:
1.第一步:分析 雞翁 能夠買多少隻的範圍 : 0<= i <= 20;
2.第二步: 分析 雞母 能夠買多少隻的範圍 : 0<= j <= 33;
3.第三步:分析 雞雛 的數量 100 - i - j 。 (總買的雞數必須剛剛是100。並且要求總金額必須是100元)。
4.第四步:分析 雞雛必須是3的倍數(每3只3只的買),而後必須三者的總金額恰好是100元的組合才能夠輸出!
*/
public class ExecDemo {
public static void main(String[] args) {
// a.使用一個循環來選擇雞翁買的只數
for(int i = 0 ; i <= 20 ; i++ ){ // 25 5
// i表明了雞翁買的只數 0 -20 之間。
// b.使用一個循環選擇雞母的只數
for(int j = 0 ; j <= 33 ; j++ ){
// j 表明了雞母的只數:0 - 33
// c.獲得雞雛的只數k
int k = 100 - i - j ;
// d.判斷三種類型的雞的總金額是否剛恰好是100元 ,是這種組合的結果就知足了百錢百雞
// 注意:雞雛的數量必須剛剛是3的倍數!
if(k % 3 == 0 && i * 5 + j * 3 + k/3 == 100){
System.out.println("雞翁:"+i+",雞母:"+j +",雞雛:"+k);
}
}
}
}
}
package com.itheima._06數組元素求和;
/**
案例需求:
有這樣的一個數組,元素是{68,27,95,88,171,996,51,210}。求出該數組中知足要求的元素和, 要求
是:求和的元素個位和十位都不能是7,而且只能是偶數
分析步驟:
0.定義數組。
1.定義變量存儲最終求和的結果。
2.遍歷數組中的每一個元素值。
3.當前元素值必須知足:個位和十位都不能是7,而且只能是偶數 纔可以被累加到求和變量中去。
4.循環結束以後輸出求和變量便可。
*/
public class ExecDemo {
public static void main(String[] args) {
// 0.定義數組。
int[] arr = {68,27,95,88,171,996,51,210};
// 0 1 2 3 4 5 6
// 1.定義變量存儲最終求和的結果。
int sum = 0 ;
// 2.遍歷數組中的每一個元素值。
for(int i = 0 ; i < arr.length ; i++ ) {
// i = 0 1 2 3 4 5 6 7
// 當前元素值就是:arr[i]
// 3.當前元素值必須知足:個位和十位都不能是7,
// 而且只能是偶數 纔可以被累加到求和變量中去。 // 171 /10 = 17 % 10 = 7
if(arr[i] % 10 != 7 && arr[i] / 10 % 10 != 7 && arr[i] % 2==0 ) {
System.out.println(arr[i]);
sum += arr[i]; // 累加知足須要的該值到求和變量sum中去。
}
}
// 4.循環結束以後輸出求和變量便可。
System.out.println("結果是:"+sum);
}
}
package com.itheima._07判斷兩個數組是否相同;
/**
案例需求:(有點難度)
定義一個方法,用於比較兩個數組的內容是否相同和不相同。
int[] arr1 = {10 , 30 , 50 , 70 , 90};
int[] arr2 = {10 , 30 , 50 , 70 , 90};
分析步驟:
a、定義2個數組。
b、定義一個方法封裝判斷數組內容是否相同的功能,因此這個方法就應該接受2個數組。
這個方法最好給它一個返回值,認爲相同返回true, 反之返回false.
b.調用方法傳入數組,獲得比較結果:false|true。
*/
public class ExecDemo {
public static void main(String[] args) {
// 1.定義2個數組。
int[] arr1 = {10 , 30 , 50 , 70 , 90};
int[] arr2 = {10 , 30 , 50 , 70 , 90};
// 0 1 2 3 4
// 3.傳入兩個數組到方法中進行比較獲得方法的返回值
boolean result = compare(arr1 , arr2);
System.out.println(result);
}
// 2.定義一個方法封裝判斷數組內容是否相同的功能
public static boolean compare(int[] arr1 , int[] arr2){
// 4.判斷2個數組的內容是否相同
// 判斷2個數組的長度是否相同,若是長度不相同直接返回false.
if(arr1.length != arr2.length) return false;
// 5.到這兒數組的長度已是相同的,接下來要判斷具體的每一個元素值是否也相同!
// 使用一個循環遍歷兩個數組的元素進行比較
for(int i = 0 ; i < arr1.length ; i++ ) {
// i = 0 1 2 3 4
// 6.判斷元素內容是否相同 ,若是發現有一個不一樣就直接返回false
if(arr1[i] != arr2[i] ) return false;
}
// 7.代碼若是執行到這兒了,說明兩個數組的每一個元素都相同了,直接返回true
return true;
}
}
08查找元素在數組中的索引
package com.itheima._08查找元素在數組中的索引;
import java.util.Scanner;
/**
案例需求:
已知一個數組 arr = {19, 28, 37, 46, 50}; 鍵盤錄入一個數據,查找該數據在數組中的索引。
並在控制檯輸出找到的索引值。若是沒有查找到,則輸出-1
分析步驟:
主幹:輸入一個數據,看它是否在數組中存在,存在返回元素的索引值,不存在返回-1.
一、定義一個數組。
二、接收用戶輸入一個數據。
三、定義一個方法接收數組和查詢的數據,而後在方法中看是否在數組中存在,存在返回元素的索引值,不存在返回-1。
四、調用方法傳入數組和數據,獲得方法的返回結果。
*/
public class ExecDemo {
public static void main(String[] args) {
// 一、定義一個數組。
int[] arr = {19, 28, 37, 37, 46, 50} ;
// 二、接收用戶輸入一個數據。
Scanner sc = new Scanner(System.in);
System.out.print("請輸入您要查找的數據:");
int data = sc.nextInt();
// 四、調用方法傳入數組和數據,獲得方法的返回結果。
int index = getDataIndex(arr , data);
System.out.println(index);
}
// 3.定義一個方法等着該功能
public static int getDataIndex(int[] arr , int data){
// arr {19, 28, 37, 46, 50}
// i 0 1 2 3 4
// data 37
// 5.判斷傳入的數組中是否存在該數據,存在返回該數據的索引值,不存在返回-1.
for(int i = 0 ; i < arr.length ; i++ ){
if(arr[i] == data){
return i;
}
}
// 6.若是整個循環遍歷完都沒有返回索引數據,說明不存在該元素值
return -1;
}
}
package com.itheima._09數組元素反轉;
/**
案例需求:
已知一個數組 arr = {19, 28, 37, 46, 50}; 用程序實現把該數組中的元素值交換, 交換後的數組 arr = {50,
46, 37, 28, 19}; 並在控制檯輸出交換後的數組元素
分析步驟:
思路:首尾交換。
一、使用一個循環,定義2個計數器,一個計數器在第一個位置,一個計數器在最後一個位置。
二、控制前面的計算器往前加,後面的計數器日後減。
三、循環條件如何控制,正常交換的條件必須是 : i < j 。(i必須在j的後面才須要交換)
*/
public class ExecDemo {
public static void main(String[] args) {
//int a = 20, b = 10;
// 0.準備數組
int[] arr = {19, 28 , 46, 50};
// i j
// 一、使用一個循環,定義2個計數器,一個計數器在第一個位置,一個計數器在最後一個位置。
// i在數組的第一個索引,j在數組的最後一個索引
for(int i = 0 , j = arr.length - 1 ; i < j ; i++ , j-- ){
// 交換 i 和 j位置處的元素。
// 2.定義一個臨時變量
int temp = arr[i]; // 19
arr[i] = arr[j];
arr[j] = temp ;
}
// 3.輸出數組內容看一下!
for(int i = 0 ; i < arr.length ; i++ ){
System.out.print(arr[i]+" ");
}
}
}
package com.itheima._10評委打分;
import java.util.Random;
/**
案例需求:
在編程競賽中,有6個評委爲參賽的選手打分,分數爲0-100的隨機整數分。 選手的最後得分爲:去掉一個
最高分和一個最低分後 的4個評委平均值 (不考慮小數部分)。
分析步驟:
一、定義一個數組存儲6個評委的分數。
二、隨機6個0-100的分數存入到數組中去。
三、輸出一下數組中的內容看一下。
四、找出該選手的評分均(去掉最高和最低)。
*/
public class ExecDemo {
public static void main(String[] args) {
// 一、定義一個數組存儲6個評委的分數。
int[] scores = new int[6];
// 2.循環6次爲當前數組產生隨機的6個0-100的分數
Random r = new Random();
for(int i = 0 ; i < scores.length ; i++ ){
// i = 0 1 2 3 4 5
scores[i] = r.nextInt(101); // 0-100 一、把隨機數賦值到了數組的當前位置
}
// 3.定義一個方法把數組的內容打印出來看一下!!
printArray(scores);
// 4.計算出該選手的平均分數。
calcAvgScore(scores);
}
public static void calcAvgScore(int[] arr){
// arr [29, 50, 65, 5, 61, 84]
// a、計算出該選手的平均分數。
// b、定義一個變量存儲最大值,最小值,總和
int max = arr[0]; // 存儲最大值
int min = arr[0]; // 存儲最小值
int sum = 0 ; // 求和
// c.遍歷數組
for(int i = 0 ; i < arr.length ; i++ ) {
// d.判斷最大值
if(arr[i] > max){
max = arr[i];
}
// e.判斷最小值
if(arr[i] < min){
min = arr[i];
}
// f.累加求和
sum += arr[i];
}
// g.去掉最高分最低分
int avg = (sum - max - min ) / (arr.length - 2);
System.out.println("去掉最高分:"+max);
System.out.println("去掉最低分:"+min);
System.out.println("去掉最高分最低分後的平均分爲:"+avg);
}
public static void printArray(int[] arr){
System.out.print("[");
for(int i = 0 ; i < arr.length ; i++ ) {
System.out.print(i == arr.length - 1 ? arr[i] : arr[i]+", "); // 不能換行!
}
System.out.print("]");
System.out.println(); // 換行!
}
}
1.程序運行後經過鍵盤錄入一個字符串。要求字符串中必須包含:大寫字母
2.若是錄入的字符串中沒有大寫字母、要進行給出提示。而後程序能夠繼續錄入字符串
3.若是錄入的字符串中有大寫字母。那麼統計這個字符串中小寫字母、大寫字母、數字、其餘字符出現的個數。程序結束
例如:
請輸入一個字符串:
123456abc
您輸入的字符串中沒有大寫字母。請從新輸入:
ABC456ghi$%^&D
大寫字母有:4個
小寫字母有:3個
數字有:3個
其餘字符有:4個
代碼以下:
package M1;
import java.util.Scanner;
public class M1 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
while (true) {
System.out.println("請輸入一個字符串:");
String s = sc.next();
int countnum = 0;
int countA = 0;
int counta = 0;
int Qita = 0;
//char[] arr = s.toCharArray();//字符串變成字符數組
StringBuilder sb=new StringBuilder(s);//將鍵盤錄入的值存入sb
for (int i = 0; i < sb.length(); i++) {
char c = sb.charAt(i);//遍歷拿到每一個字符
if (c >= '0' && c <= '9') {//判斷
countnum++;
} else if (c >= 'a' && c <= 'z') {
counta++;
} else if (c >= 'A' && c <= 'Z') {
countA++;
} else {
Qita++;
}
}
/*for (int i = 0; i < arr.length; i++) {
if (arr[i] >= '0' && arr[i] <= '9') {
countnum++;
} else if (arr[i] >= 'a' && arr[i] <= 'z') {
counta++;
} else if (arr[i] >= 'A' && arr[i] <= 'Z') {
countA++;
} else {
Qita++;
}
}
if (Qita == arr.length) {
System.out.println("全是字符,從新輸入!");
continue;
}
*/
if (countA==0){//沒有大寫跳事後續代碼,繼續循環
System.out.println("沒有大寫,請從新輸入!");
continue;
}
System.out.println("數字" + countnum);
System.out.println("大寫" + countA);
System.out.println("小寫" + counta);
System.out.println("其餘" + Qita);
return;
}
}
}
package Mn1;
import java.util.Scanner;
public class Mn1 {
public static void main(String[] args) {
// 定義一個方法,該方法用來獲取三個整數中的最大值。
// 並在main方法中鍵盤錄入三個整數,而後調用方法,求出錄入的三個整數中的最大值。
Scanner sc=new Scanner(System.in);
System.out.println("請輸入第一個整數");
int num_1=sc.nextInt();
System.out.println("請輸入第二個整數");
int num_2=sc.nextInt();
System.out.println("請輸入第三個整數");
int num_3=sc.nextInt();
int[]arr={num_1,num_2,num_3};
int max = Max(arr);
System.out.println("最大值爲:"+max);
}
public static int Max(int[]arr){
int max=arr[0];
for (int i = 1; i < arr.length; i++) {
if (arr[i]>max){
max=arr[i];
}
}return max;
}
}
package Mn2;
public class Mn2 {
/*定義方法exist,該方法用來判斷指定元素在數組中是否存在。
在main方法中定義數組,數組中的元素爲{3,5,2,6,1},
調用exist方法,判斷該數組中是否包含2,並輸出結果。*/
public static void main(String[] args) {
int[] arr = {3, 5, 2, 6, 1};
exist(arr);
}
/*
//方法1
public static void exist(int[] arr) {
int index = -1;
for (int i = 0; i < arr.length; i++) {
if (arr[i] == 2) {
index++;
}
}
if (index != -1) {
System.out.println("包含2");
} else {
System.out.println("不包含2");
}
}
}*/
//方法2:
public static void exist(int[] arr) {
for (int i = 0; i < arr.length; i++) {
if (arr[i] == 2) {
System.out.println("包含2");
return;
}
}
System.out.println("沒有2");
}
}
代碼以下:
import java.util.Scanner;
public class Moni_3 {
public static void main(String[] args) {
/* 遍歷下列字符串,篩選出其中的數字和字母並按照數字在前字母在後的規則
組成一個新的字符串,把組成的新字符串打印在控制檯。*/
Scanner sc=new Scanner(System.in);
System.out.println("請輸入:");
String s=sc.next();
StringBuilder sb=new StringBuilder();
for (int i = 0; i < s.length(); i++) {
char c = s.charAt(i);
if (c>='a'&&c<='z'){
sb.append(c);
}
}
for (int i = 0; i < s.length(); i++) {
char c = s.charAt(i);
if (c<='9'&&c>='0'){
sb.append(c);
}
}
for (int i = 0; i < sb.length(); i++) {
char c = sb.charAt(i);
System.out.print(c);
}
}
}
15隨機生成雙色球
需求:
已知雙色球由1個藍色球和6個紅色球組成,藍色球的範圍是1--16,紅色球的範圍是1--33;請使用程序隨機生成一組雙色球並保存到數組中;而後打印出數組中的這一組數據;
思路:
1:由題目可知須要使用一個長度爲7的數組才能保存這一注雙色球的數據;而且數據都是須要隨機生成的,因此使用數組的動態初始化更合適;
2:藍色球只有一個,因此能夠單獨生成並存放到數組的0索引位置;可是須要注意控制隨機數的範圍;
3:剩下的6個紅色球可使用循環生成並保存到數組中,可是須要注意控制隨機數的範圍;
4:數組中保存好數據之後,能夠對數組遍歷,打印數據便可;
代碼:
import java.util.Random;
public class ZuoYe1 {
public static void main(String[] args) {
//動態初始化數組
int[] arr = new int[7];
//先生成藍色球保存到0索引
Random r = new Random();
arr[0] = r.nextInt(16)+1;
//循環生成6個紅色球保存到數組的1-6索引位置
for (int i = 1; i <= 6; i++) {
arr[i] = r.nextInt(33)+1;
}
//遍歷打印數組中的元素
System.out.print("本次隨機生成的雙色球是[第一個是藍色球,剩餘的是紅色球]:");
for (int i = 0; i < arr.length; i++) {
System.out.print(arr[i]+" ");
}
}
}
package com.heima.meiri.day8;
import java.util.Random;
import java.util.Scanner;
/*
1.str用來存放隨機數
2.用一個循環去隨機去str字符串裏的字符
3.產生隨機數位字符串的長度
*/
public class kz2 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.println("請輸入要獲取幾位隨機數:");
int num_1 = sc.nextInt();
String suiji = Suiji(num_1);//傳入鍵盤錄入的數字,輸入幾打印幾位數的驗證
System.out.println("隨機數爲:" + suiji);//打印驗證碼
}
public static String Suiji(int num) {//定義方法
Random r = new Random();//建立隨機數對象
StringBuilder sb = new StringBuilder();//建立sb對象
String s = "abcdefghijklmnpqrstuvwxy0123456789ABCDEFGHIJKLMNPQRSTUVWXYZ";
將要隨機獲取的數值存入String變量
for (int i = 1; i < num; i++) {
//num爲幾就是幾位數的驗證碼
int num_1 = r.nextInt(s.length());
//定義隨機數範圍位爲string s的字符長度
sb.append(s.charAt(num_1));
//由於num1具備隨機性,chaAt(索引)爲索引位置的字符,將獲取到的字符存入sb
}
int i = r.nextInt(num);//定義隨機索引
int j = r.nextInt(10);//定義隨機數
char f=(char)j;
sb.insert(i, j);//插入0-4隨機索引,插入內容爲0-9隨機數字
return sb.toString();
}
}
package com.heima.meiri.day6;
public class Yhsj {
public static void main(String[] args) {
Yanghui(5);
}
public static void Yanghui(int a){
int[][]arr=new int[a][a];
for (int i = 0; i < arr.length; i++) {
arr[i][0]=1;
arr[i][i]=1;
if (i>=2){
for (int j = 1; j < i; j++) {
arr[i][j]=arr[i-1][j-1]+arr[i-1][j];
}
}
}
System.out.println("直角打印;");
for (int i = 0; i < a; i++) {
for (int j = 0; j <= i; j++) {
System.out.print(arr[i][j]+"\t ");
}
System.out.println();
}
System.out.println("金字塔打印;");
for (int i = 0; i < a; i++) {
for (int k=0;k<a-i;k++){
System.out.print("\t");
}
for (int j = 0; j <= i; j++) {
System.out.print(arr[i][j]+"\t"+"\t");
}
System.out.println();
}
System.out.println("倒金字塔打印;");
for (int i = a-1; i >= 0; i--) {
for (int k=1;k<a-i;k++){
System.out.print("\t");
}
for (int j = 0; j <=i; j++) {
System.out.print(arr[i][j]+"\t"+"\t");
}
System.out.println();
}
}
}
請從控制檯分別接收兩個「生日」,格式爲:yyyy年MM月dd日,用程序比較兩個生日表示的人的年齡大小關係並打印出結果;
要求:
1:使用Date+SimpleDateFormat完成一遍,
2:再使用LocalDate+DateTimeFormatter完成一遍;
提示:
注意,生日值越小,證實出生的越早,就意味着年齡越大,不要搞反了呦;
package day6.No_3;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.time.LocalDate;
import java.time.Period;
import java.time.format.DateTimeFormatter;
import java.util.Date;
import java.util.Scanner;
import java.util.Timer;
/*
鍵盤錄入字符串
使用Date/Loca將字符串轉換爲毫秒
對比兩者毫秒值
*/
public class Demo {
public static void main(String[] args) throws ParseException {
Scanner sc = new Scanner(System.in);
System.out.println("請輸入第一個生日(****年**月**日)");
String s1 = sc.next();
System.out.println("請輸入第一個生日(****年**月**日)");
String s2 = sc.next();
DateTimeFormatter dateTimeFormatter = DateTimeFormatter.ofPattern("yyyy年MM月dd日");
LocalDate localDate = LocalDate.parse(s1, dateTimeFormatter);
LocalDate localDate1 = LocalDate.parse(s2, dateTimeFormatter);
// LocalDate+DateTimeFormatter實現對比
if (localDate.isAfter(localDate1)) {
System.out.println("第二個大");
}
if (localDate.isBefore(localDate1)) {
System.out.println("第一個大");
}if (localDate.isEqual(localDate1)){
System.out.println("同樣大");
}
// Date SimpleDateFormat實現對比:
Date date = new Date();
SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy年MM月dd日");
try {
long time1 = simpleDateFormat.parse(s1).getTime();
long time2 = simpleDateFormat.parse(s2).getTime();
if (time1 > time2) {
System.out.println("第二個大");
} else if (time1<time2){
System.out.println("第一個大");
}else {
System.out.println("同樣大");
}
} catch (ParseException e) {
e.printStackTrace();
}
}
}
19隨機生成8個不重複的10至20之間的隨機數並保存Set集合中,而後打印出集合中全部的數據
要求:
使用TreeSet集合實現;
參考代碼:
public static void main(String[] args) {
TreeSet<Integer> set = new TreeSet<>();
Random r = new Random();
int count =1;
while (set.size()<8){
int i = r.nextInt(20 - 10 + 1) + 10;
System.out.println("第"+count++ +"次生成的隨機數是:"+i);
set.add(i);
}
System.out.println("集合中保存的8個不重複的隨機數是:"+set);
}
要求:
1:書以對象形式存在,包含書名和價格(int類型)兩個屬性;
2:要求即便直接打印書對象的時候,也能看到書的名稱和價格,而不是書對象的地址值;
3:分別使用天然排序和比較器排序實現效果;
參考代碼:
方式一:
public class Book implements Comparable<Book>{
private String name;
private int price;
@Override
public int compareTo(Book book) {
int i = this.price - book.price;//主要條件
return i==0?this.name.compareTo(book.name):i;//次要條件
}
-----本身補全getter/setter,構造方法,toString方法------
}
測試類的main方法
public static void main(String[] args) {
TreeSet<Book> set = new TreeSet<Book>();
Scanner sc = new Scanner(System.in);
int i=1;
while (true){
System.out.println("請輸入第"+i +"本書的名稱:");
String name = sc.next();
System.out.println("請輸入第"+i +"本書的價格(整數):");
int price = sc.nextInt();
Book b1 = new Book(name,price);
set.add(b1);
i++;
System.out.println("添加"+name+" 書已經成功,繼續添加請輸入1,輸入其餘數字將結束!");
int ch = sc.nextInt();
if(ch!=1){
break;
}
}
System.out.println("您一共添加了:"+set.size()+"本書,分別是:");
for (Book book : set) {
System.out.println(book);
}
}
方式二:
public class Book{//無需實現接口
private String name;
private int price;
-----本身補全getter/setter,構造方法,toString方法------
}
測試類的main方法
public static void main(String[] args) {
TreeSet<Book> set = new TreeSet<Book>((b1, b2) ->{
int v = b1.getPrice()-b2.getPrice();//主要條件
return v==0?b1.getName().compareTo(b2.getName()):v;//次要條件
} );
Scanner sc = new Scanner(System.in);
int i=1;
while (true){
System.out.println("請輸入第"+i +"本書的名稱:");
String name = sc.next();
System.out.println("請輸入第"+i +"本書的價格(整數):");
int price = sc.nextInt();
Book b1 = new Book(name,price);
set.add(b1);
i++;
System.out.println("添加"+name+" 書已經成功,繼續添加請輸入1,輸入其餘數字將結束!");
int ch = sc.nextInt();
if(ch!=1){
break;
}
}
System.out.println("您一共添加了:"+set.size()+"本書,分別是:");
for (Book book : set) {
System.out.println(book);
}
}
信息以下:
18歲的張三,北京
20歲的李四,上海
35歲的王五,天津
21歲的趙六,北京
19歲的田七,上海
要求:
1:勞模類中有姓名和年齡兩個屬性;
2:添加上述信息後,使用代碼刪除張三的信息
3:添加上述信息後,使用代碼修改李四的家庭住址爲鄭州
4:使用至少兩種方式遍歷集合中的信息並輸出;
參考代碼:
使用迭代器,都能進行修改和刪除
修改不會改變值得個數,因此修改可使用迭代器,也能夠直接使用加強for進行修改
class Demo1 {
public static void main(String[] args) {
Student s1 = new Student("張三", 23);
Student s2 = new Student("李四", 24);
Student s3 = new Student("王五", 25);
Student s4 = new Student("趙六", 26);
TreeMap<Student, String> ts = new TreeMap<>();
ts.put(s1, "北京");
ts.put(s2, "上海");
ts.put(s3, "廣東");
ts.put(s4, "深圳");
Set<Student> keySet = ts.keySet();
//迭代器刪除方式,刪除key的姓名爲李四的鍵值對
Iterator<Student> iterator1 = keySet.iterator();
while (iterator1.hasNext()) {
Student key = iterator1.next();
if (key.getName().equals("李四")) {
iterator1.remove();//此時注意是用的迭代器的刪除方法,而不是Map集合的刪除方法,使用Map集合刪除方法,此處會報錯
}
}
//修改方式一:
//迭代器修改方式,將張三的值修改成鄭州
Iterator<Student> iterator = keySet.iterator();
while (iterator.hasNext()) {
Student key = iterator.next();
if (key.getName().equals("張三")) {
ts.put(key, "鄭州");
System.out.println("修改爲功");
}
}
//bug代碼:
/*
Iterator<Student> iterator = keySet.iterator();
while (iterator.hasNext()) {
if (iterator.next().getName().equals("張三")) {
ts.put(iterator.next(), "鄭州");
}//此邏輯不會編譯報錯,運行也不報錯,可是邏輯不通,,可是會修改到下一個key的值,迭代器的默認指向下一個原理
}*/
/*
//修改方式二,加強for修改
for (Student key : keySet) {
if (key.getName().equals("張三")){
ts.put(key,"鄭州");
System.out.println("修改爲功");
}
}
*/
System.out.println(ts);
System.out.println("遍歷:");
for (Student key : keySet) {
String value = ts.get(key);
System.out.println(key.getAge() + "歲的" + key.getName() + "," + value);
}
}
}