文章目錄
1. 實例 1
1.1 題目
有1、2、3、4個數字,能組成多少個互不相同且無重複數字的三位數?都是多少?
1.2 思路
填在各位上的數字都可以是 1、2、3、4,但是隻要滿足各位上的數不相同,就可以當成一個組成的數。
1.3 代碼
/**
* @ClassName : One
* @Author : cunyu1943
* @Date : 2020/6/18 11:17
* @Version : 1.0
* @Description : 實例 1
**/
public class One {
public static void main(String[] args) throws Exception {
// 用於計數
int count = 0;
System.out.println("組成的數:");
// 設置三重循環,對每位上的數進行賦值
for (int i = 1; i < 5; i++) {
for (int j = 1; j < 5; j++) {
for (int k = 1; k < 5; k++) {
// 將不滿足條件的排列去掉
if (i != j && i != k && k != j) {
// 滿足條件則計數 + 1
count = count + 1;
System.out.print("" + (i * 100 + j * 10 + k)+"\t");
// 每輸出 5 個則換行輸出
if (count % 5 ==0){
System.out.println();
}
}
}
}
}
System.out.println("\n滿足條件的數有:" + count + " 個");
}
}
1.4 結果
組成的數:
123 124 132 134 142
143 213 214 231 234
241 243 312 314 321
324 341 342 412 413
421 423 431 432
滿足條件的數有:24 個
2. 實例 2
2.1 題目
企業發放的獎金根據利潤提成。
- 利潤(I)低於或等於10萬元時,獎金可提10%;
- 利潤高於10萬元,低於20萬元時,低於10萬元的部分按10%提成,高於10萬元的部分,可提成7.5%;
- 20萬到40萬之間時,高於20萬元的部分,可提成5%;
- 40萬到60萬之間時高於40萬元的部分,可提成3%;
- 60萬到100萬之間時,高於60萬元的部分,可提成1.5%;
- 高於100萬元時,超過100萬元的部分按1%提成。
從鍵盤輸入當月利潤,求應發放獎金總數?
2.2 思路
可以將利潤利用各個閾值進行分界,先將各個臨界點的獎金算出來,然後再對各區間進行處理
2.3 代碼
import java.util.Scanner;
/**
* @ClassName : Two
* @Author : cunyu1943
* @Date : 2020/6/18 11:44
* @Version : 1.0
* @Description : 實例 2
**/
public class Two {
public static void main(String[] args) throws Exception {
// 最終獎金
double bonus = 0.0;
System.out.println("輸入利潤:");
Scanner input = new Scanner(System.in);
// 利潤
long profit = input.nextLong();
// 將各個臨界點的獎金算出來
double baseBonus = 100000 * 0.1;
double bonus1 = baseBonus + 100000 * 0.075;
double bonus2 = bonus1 + 200000 * 0.05;
double bonus3 = bonus2 + 200000 * 0.03;
double bonus4 = bonus3 + 400000 * 0.015;
if (profit <= 100000) {
// 利潤低於或等於10萬元時
bonus = profit * 0.1;
} else if (profit <= 200000) {
// 利潤高於10萬元,低於20萬元時
bonus = baseBonus + (profit - 100000) * 0.075;
} else if (profit <= 400000) {
// 20萬到40萬之間時
bonus = bonus1 + 0.05 * (profit - 200000);
} else if (profit <= 600000) {
// 40萬到60萬時
bonus = bonus2 + (profit - 400000) * 0.03;
} else if (profit <= 1000000) {
// 60萬到100萬之間時
bonus = bonus3 + (profit - 600000) * 0.015;
} else if (profit > 1000000) {
// 高於100萬元時
bonus = bonus4 + (profit - 1000000) * 0.01;
}
System.out.println("當月獎金爲:" + bonus);
}
}
2.4 結果
輸入利潤:
120000
當月獎金爲:11500.0
3. 實例 3
3.1 題目
一個整數,它加上100後是一個完全平方數,再加上168又是一個完全平方數,請問該數是多少?
3.2 思路
完全平方數:若一個數能表示成某個正數的平方的形式,則說該數是一個完全平方數
- 假設該數是 ,則有
- 從而 ,
(n - m)(n + m) = 168
,則說明 或者 其中必有一個偶數 - 設 ,則 ,說明 均爲偶數,或者均爲奇數
- 由 2 和 3,可以得出 兩者均爲偶數
- ,則
3.3 代碼
/**
* @ClassName : Three
* @Author : cunyu1943
* @Date : 2020/6/18 13:40
* @Version : 1.0
* @Description : 實例 3
**/
public class Three {
public static void main(String[] args) throws Exception {
// 最終結果
int result = 0;
System.out.println("最終結果可能的值:");
for (int i = 2; i < (168 / 2 + 1); i++) {
// i,j 爲偶數,i * j = 168
if (168 % i == 0) {
int j = 168 / i;
// i = n + m,j = n - m,且 i, j 均爲偶數,偶數之和/差仍爲偶數
if (i > j && (i + j) % 2 == 0 && (i - j) % 2 == 0) {
int n = (i + j) / 2;
int m = (i - j) / 2;
result = m * m - 100;
System.out.println("" + result);
}
}
}
}
}
3.4 結果
最終結果可能的值:
-99
21
261
1581
4. 實例 4
4.1 題目
輸入某年某月某日,判斷這一天是這一年的第幾天?
4.2 思路
同實例 2 類似,先以平年爲基準將各個臨界點的值事先算出來,然後再做後續處理,針對特殊情況閏年,則當月份大於 2 時,在平年的基礎上加 1 即可
4.3 代碼
import java.util.Scanner;
/**
* @ClassName : Four
* @Author : cunyu1943
* @Date : 2020/6/18 14:29
* @Version : 1.0
* @Description : 實例 4
**/
public class Four {
public static void main(String[] args) throws Exception {
Scanner input = new Scanner(System.in);
System.out.println("分別輸入年月日,輸入一個值則回車一次");
int year = input.nextInt();
int month = input.nextInt();
int day = input.nextInt();
// 某年的第幾天
int sum = 0;
// 先以平年爲基準
switch (month) {
case 1:
sum = 0;
break;
case 2:
sum = 31;
break;
case 3:
sum = 59;
break;
case 4:
sum = 90;
break;
case 5:
sum = 120;
break;
case 6:
sum = 151;
break;
case 7:
sum = 181;
break;
case 8:
sum = 212;
break;
case 9:
sum = 243;
break;
case 10:
sum = 273;
break;
case 11:
sum = 304;
break;
case 12:
sum = 334;
break;
default:
break;
}
// 判別閏平年
boolean leap = false;
if (year % 400 == 0 || (year % 4 == 0 & year % 100 != 0)) {
leap = true;
}
// 某月之前的天數加上當月的天數
sum = sum + day;
// 是閏年且月份大於 2 則在平年的基礎上 + 1
if (leap == true && month > 2) {
sum = sum + 1;
}
System.out.println("輸入的日期是該年的第 " + sum + " 天!");
}
}
4.4 結果
分別輸入年月日,輸入一個值則回車一次
2020
6
18
輸入的日期是該年的第 170 天!
5. 實例 5
5.1 題目
輸入三個整數x,y,z,請把這三個數由小到大輸出。
5.2 思路
- 先將三個整數存放在數組中
- 對數組進行從小到大排序
- 輸出排序後的數組即可
5.3 代碼
import java.util.Arrays;
import java.util.Scanner;
/**
* @ClassName : Five
* @Author : cunyu1943
* @Date : 2020/6/18 14:46
* @Version : 1.0
* @Description : 實例 5
**/
public class Five {
public static void main(String[] args) throws Exception {
Scanner input = new Scanner(System.in);
// 用於存放輸入的 3 個數
int[] array = new int[3];
System.out.println("輸入三個數,每輸入一個回車一次:");
for (int i = 0; i < 3; i++) {
array[i] = input.nextInt();
}
// 對數組排序輸出
for (int i = 0; i < array.length - 1; i++) {
for (int j = 0; j < array.length - 1 - i; j++) {
// 前後比較,將大的放在後邊
if (array[j] > array[j + 1]) {
int tmp = array[j];
array[j] = array[j + 1];
array[j + 1] = tmp;
}
}
}
// 打印排序後的數組
System.out.println("三個數從小到大:");
for (int item : array
) {
System.out.print(item + "\t");
}
}
}
5.4 結果
輸入三個數,每輸入一個回車一次:
43
54
2
三個數從小到大:
2 43 54
建議關注公衆號 村雨遙,文章會優先發布在此處,此外還有 超多精品資源 等着你。