07.21
1. 指定一个图书编号,01代表红楼梦,02代表西游记,03代表金瓶梅,04代表水浒传,对应编号输出。
public class HomeWork1Test {
@Test
public void work01() {
String number = "01";
String result = "";
switch (number) {
case "01":
result = "红楼梦";
break;
case "02":
result = "西游记";
break;
case "03":
result = "金瓶梅";
break;
case "04":
result = "水浒传";
break;
default:
break;
}
System.out.println(result);
}
2.指定一个分数,60分以下不及格,60-80之间及格,80-100优秀,要求只能使用switch。
@Test
public void work02() {
int score = 80;
String result = "";
switch (score / 10) {
case 0:
case 1:
case 2:
case 3:
case 4:
case 5:
result = "不及格";
break;
case 6:
case 7:
result = "及格";
break;
case 8:
case 9:
case 10:
result = "优秀";
break;
default:
result = "输入有误!";
break;
}
System.out.println(result);
}
3.使用while循环来输出10-15。
@Test
public void work03() {
int i = 10;
while (i <= 15) {
System.out.println(i++);
}
}
4. 假设,芳芳答应老王攒够60万就嫁给他,老王去隔壁街小黑屋卖血一次可以赚1000元,求老 王需要卖多少次血才能娶到芳芳。
@Test
public void work04() {
int times = 0;
int money = 0;
while (money < 600000) {
times++;
money += 1000;
}
System.out.println(times);
}
5.小兵今年13岁,大兵36岁,求多少年后大兵的年龄是小兵的2倍?
@Test
public void work05() {
int small = 13;
int large = 36;
int year = 0;
while (small * 2 != large) {
small++;
large++;
year++;
}
System.out.println(small);
System.out.println(large);
System.out.println(year);
}
6.使用dowhile循环来输出10-15。
@Test
public void work06() {
int i = 10;
do {
System.out.println(i++);
}
while (i <= 15);
}
7.本金1万元存入银行,年利率是千分之三,每过1年,将本金和利息相加作为新的本金,计算5年之后,获得的本金是多少?
@Test
public void work07() {
double money = 10000;
double annualInterestRate = 0.003;
int year = 5;
double interest = 0.0;
for (int i = 0; i < year; i++) {
interest = money * annualInterestRate;
money = money + interest;
}
System.out.println(money);
}
8.求整数1-100的累加值,但要求第3,第6,第9...(3的倍数)个值,跳过不计算。
@Test
public void work08() {
int sum = 0;
for (int i = 1; i <= 100; i++) {
if (i % 3 == 0) {
continue;
}
sum += i;
}
System.out.println(sum);
}
9.利用for循环,输出1-100之间所有的偶数。
@Test
public void work09() {
for (int i = 2; i <= 100; i += 2) {
System.out.print(i + "\t");
}
}
10.利用for循环,求从0开始每次加5,加多少次之后可以达到135。
@Test
public void work10() {
int count = 0;
for (int i = 0; i < 135; i += 5) {
count++;
}
System.out.println(count);
}
11.你是一个土豪,你去参加非诚勿扰节目,现场一共有11位女嘉宾,从第一位女嘉宾开始循环出场,直到你喜欢的四号女嘉宾出场的时候,输出"I love you!"。
@Test
public void work11() {
for (int i = 1; i <= 11; i++) {
if (i == 4) {
System.err.println(i + "号女嘉宾出场,I love you!");
break;
}
System.out.println(i + "号女嘉宾出场!");
}
}
12.交换变量值
@Test
public void work12() {
// 方法一:引入第三方变量的方法;
int a = 1, b = 2;
int temp = a;
a = b;
b = temp;
System.out.println(a);
System.out.println(b);
// 方法二:不引入第三方变量的方法
int a1 = 1, b1 = 2;
a1 = a1 + b1;
b1 = a1 - b1;
a1 = a1 - b1;
System.out.println(a1);
System.out.println(b1);
}
13.判断100-120之间有没有能被23整除的数
@Test
public void work13() {
boolean flag = false;
for (int i = 100; i <= 120; i++) {
if (i % 23 == 0) {
flag = true;
break;
}
}
System.out.println(flag ? "有能被23整除的数" : "没有能被23整除的数");
}
14.判断100-200之间有多少个能被23整除的数
@Test
public void work14() {
int count = 0;
for (int i = 100; i <= 200; i++) {
if (i % 23 == 0) {
count++;
}
}
System.out.println("有" + count + "个能被23整除的数");
}
15.求数组:{1, 3, 5, 7, 9, 2, 4, 6, 8, 0},的最小值,最大值和平均值。
@Test
public void work15() {
int[] arr = {1, 3, 5, 7, 9, 2, 4, 6, 8, 0};
int min = arr[0];
int max = arr[0];
double sum = 0;
for (int i = 0, j = arr.length; i < j; i++) {
if (arr[i] > max) {
max = arr[i];
}
if (arr[i] < min) {
min = arr[i];
}
sum += arr[i];
}
System.out.println("最小值是:" + min);
System.out.println("最大值是:" + max);
System.out.println("平均值是:" + (sum / arr.length));
}
16. 输出数字串"18210210122"中的最大数字"8"和最小值数字"0"。
@Test
public void work16() {
String numStr = "18210210122";
char[] numArr = numStr.toCharArray();
Arrays.sort(numArr);
System.out.println("theMinValue:" + numArr[0]);
System.out.println("theMaxValue:" + numArr[numArr.length - 1]);
}
17.找出2个已知数组中相同的值:
@Test
public void work17() {
// - int[] as = {2, 3, 6, 9, 11, 15, 19, 23, 35};
// - int[] bs = {1, 3, 7, 9, 11, 13, 14, 19, 35}。
int[] as = {2, 3, 6, 9, 11, 15, 19, 23, 35};
int[] bs = {1, 3, 7, 9, 11, 13, 14, 19, 35};
for (int e1 : as) {
for (int e2 : bs) {
if (e1 == e2) {
System.out.print(e1 + "\t");
}
}
}
}
18.设计程序,要求可以从1到32随机生成不重复的7个数。
@Test
public void work18() {
int[] nums = new int[32];
for (int i = 0; i < nums.length; i++) {
nums[i] = i + 1;
}
// 把数组打乱10000次
Random random = new Random();
for (int i = 0; i < 10000; i++) {
int posA = random.nextInt(32);
int posB = random.nextInt(32);
int temp = nums[posA];
nums[posA] = nums[posB];
nums[posB] = temp;
}
// 取前七个
for (int i = 0; i < 7; i++) {
System.out.print(nums[i] + "\t");
}
}
}
07.22
1.拆读数字(三位数),例如:153翻译成一百五十三。
(1)
public class Practice1Test {
@Test
public void work01() {
int yourNum = 400;
String result = "数字无效";
String numStr = " 一二三四五六七八九";
// 将接到的数进行判断,如果是三位数,执行,如果不是输出数字无效
if (yourNum > 99 && yourNum < 1000) {
// 将三位数拆成三部分 456
int bai = yourNum / 100;
int shi = yourNum / 10 % 10;
int ge = yourNum % 10;
char baiWei = numStr.charAt(bai);
char shiWei = numStr.charAt(shi);
char geWei = numStr.charAt(ge);
result =
shi == 0 && ge == 0 ? baiWei + "百" :
shi == 0 && ge != 0 ? baiWei + "百零" + geWei :
shi != 0 && ge == 0 ? baiWei + "百" + shiWei : baiWei + "百" + shiWei + "十" + geWei;
}
System.out.println(result);
}
(2)
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.println("请输入数字...");
int num = scanner.nextInt();
int baiwei=num/100;
int shiwei=num%100/10;
int gewei=num%10;
String[] arrA = {"零","一","二","三","四","五","六","七","八","九"};
String result = arrA[baiwei] + "百";
if (shiwei==0){
result=result+"零"+arrA[gewei];
}else{
result=result+arrA[shiwei]+"十"+arrA[gewei];
}
System.out.println(result);
}
2.打印1-2000之间既能被3整除又能被8整除的前15个数,逢5换行。
@Test
public void work02() {
int count = 0;
for (int i = 1; i <= 2000; i++) {
if (i % 3 == 0 && i % 8 == 0 && count < 15) {
System.out.print(i + "\t");
count++;
if (count % 5 == 0) {
System.out.println();
}
}
}
}
3.输出菲波拉契数列的前20项(1,1,2,3,5,8…)。
@Test
public void work03() {
int a = 1, b = 1;
for (int i = 0; i < 20; i++) {
System.out.print(a + "\t");
System.out.print(b + "\t");
// 新a = 旧a + 旧b
// 新b = 新a + 旧b
a = a + b;
b = a + b;
}
}
4.编写程序算出1!+2!+3!+ … +10!的和。(3!标识1* 2* 3)。
@Test
public void work04() {
int sum = 0, factorial = 1;
for (int i = 1; i <= 10; i++) {
// 这就是阶乘 1 * 1 * 2 * 3 * 4...
factorial *= i;
sum += factorial;
}
System.out.println(sum);
}
5.判断101-200之间有多少个素数,并输出所有素数,除了1和本身不能被任何数整除的数叫素数。
@Test
public void work05() {
int count = 0;
for (int dividend = 101; dividend <= 200; dividend++) {
// 除数,每次都从2开始
int divisor = 2;
while (dividend > divisor) {
if (dividend % divisor == 0) {
// 它是不是素数
break;
}
// 每次除数都要增加,从2一直加到被除数。
divisor++;
}
// 如果除数已经增加到被除数的值,说明之前没有能除尽的情况,就是素数
if (dividend == divisor) {
count++;
System.out.println(dividend);
}
}
System.out.println(count + "个素数");
}
}