1 实现对三个整数进行排序,输出时按照从小到大的顺序输出
package com.atguigu.exer3;
import java.util.Scanner;
public class SortNumber {
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
System.out.println("请依次输入三个整数:");
int num1 = scan.nextInt();
int num2 = scan.nextInt();
int num3 = scan.nextInt();
// 嵌套if-else结构确实能做 但是我这次不想去用这个结构
int max1 = (num1 > num2)?num1:num2;
int min1 = (num1 > num2)?num2:num1;
int max = (max1 > num3)?max1:num3;
int min = (min1 > num3)?num3:min1;
int middle = num1 + num2 + num3 - max - min;
System.out.println("从小到大排序为:" + min +"," + middle + "," + max);
}
}
2 编写程序,从键盘接收整数参数。如果该数为1-7,打印对应的星期值,否则打印“非法参数”
package com.atguigu.exer3;
import java.util.Scanner;
public class PrintDays {
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
System.out.print("请输入(1-7)之间的整数:");
int day = scan.nextInt();
if(day < 1 || day > 7) {
System.out.println("非法输入!");
}else {
switch(day) {
case 1:
System.out.println("星期一");
break;
case 2:
System.out.println("星期二");
break;
case 3:
System.out.println("星期三");
break;
case 4:
System.out.println("星期四");
break;
case 5:
System.out.println("星期五");
break;
case 6:
System.out.println("星期六");
break;
case 7:
System.out.println("星期七");
break;
}
}
}
}
3 switch是否能作用在byte上,是否能作用在long上,是否能作用在String上
switch结构中的表达式,只能是如下的6种数据类型:byte,short,char,int,枚举类型,String类型
4 编写程序,判断给定的某个年份是否是闰年
闰年的判断规则如下:
(1)若某个年份能被4整除但不能被100整除,则是闰年。
(2)若某个年份能被400整除,则也是闰年
package com.atguigu.exer3;
import java.util.Scanner;
public class SortNumber {
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
System.out.print("请输入年份:");
int year = scan.nextInt();
if( (year % 4 ==0 && year % 100 !=0) || year % 400 == 0){
System.out.println(year + "年是闰年!")
}else{
System.out.println(year + "年不是闰年!")
}
}
5 要求用户输入两个数a和b,如果a能被b整除或者a加b大于1000,则输出a;否则输出b
package com.atguigu.exer3;
import java.util.Scanner;
public class HandleIntNumber {
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
System.out.println("请输入两个整数:");
int a = scan.nextInt();
int b = scan.nextInt();
if(b % a == 0 || a + b > 1000) {
System.out.println(a);
}else {
System.out.println(b);
}
}
}
6 彩票游戏
假设你想开发一个玩彩票的游戏,程序随机地产生一个两位数的彩票,提示用户输入一个两位数,然后按照下面的规则判定用户是否能赢。
1)如果用户输入的数匹配彩票的实际顺序,奖金10 000美元。
2)如果用户输入的所有数字匹配彩票的所有数字,但顺序不一致,奖金 3 000美元。
3)如果用户输入的一个数字仅满足顺序情况下匹配彩票的一个数字,奖金1 000美元。
4)如果用户输入的一个数字仅满足非顺序情况下匹配彩票的一个数字,奖金500美元。
5)如果用户输入的数字没有匹配任何一个数字,则彩票作废
package com.atguigu.exer3;
import java.util.Scanner;
public class Lottery {
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
// 系统生成的 10-99
int Random = (int) ((99 - 10 + 1) * Math.random()) + 10;
System.out.println("系统随机生成的数为 :" + Random);
System.out.print("请输入两位数:");
int input = scan.nextInt();
if (input < 10 || input > 99) {
System.out.println("输入非法!");
return;
}
int inputTen = input / 10;
int inputOne = input % 10;
int RandomTen = Random / 10;
int RandomOne = Random % 10;
if (inputTen == RandomTen && inputOne == RandomOne) {
System.out.println("奖金10000美元!");
} else if (inputTen == RandomOne && inputOne == RandomTen) {
System.out.println("奖金3000美元!");
} else if (inputTen == RandomTen || inputOne == RandomOne) {
System.out.println("奖金1000美元!");
} else if (inputTen == RandomOne || inputOne == RandomTen) {
System.out.println("奖金500美元!");
} else {
System.out.println("无奖励!");
}
}
}
7 赌数游戏
提供三个1-6的随机数,作为掷骰子得到的点数。如果各个点数相同,则为豹子。
如果三个骰子点数和,小于或等于9,则为“小”。
如果三个骰子点数和,大于9,则为“大”。
用户随机选择:押大、押小或者押豹子。通过判断,输出客户是否押正确。
package com.atguigu.exer3;
import java.util.Scanner;
public class Gamber {
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
System.out.print("请输入(大/小/豹子):");
String userString = scan.next();
// 1-6 之间随机字符
int a = (int)(Math.random()*(6-1+1)) + 1;
int b = (int)(Math.random()*(6-1+1)) + 1;
int c = (int)(Math.random()*(6-1+1)) + 1;
String randomString;
if(a == b && b == c) {
randomString = "豹子";
}else {
if( a+b+c <= 9) {
randomString = "小";
}else {
randomString = "大";
}
}
System.out.println("用户输入的结果 :" +userString);
System.out.println("随机的结果 :" +randomString);
if(userString.equals(randomString)) {
System.out.println("正确!");
}else {
System.out.println("错误!");
}
}
}
8 生肖问题
编写一个程序,为一个给定的年份找出其对应的中国生肖。
中国的生肖基于12年一个周期,每年用一个动物代表:
rat(鼠)、ox(牛)、tiger(虎)、rabbit(兔)、dragon(龙)、snake(蛇)、
horse(马)、sheep(羊)、monkey(候)、rooster(鸡)、dog(狗)、pig(猪)。
提示:2019年:猪 2019 % 12 == 3
package com.atguigu.exer3;
import java.util.Scanner;
public class Animals {
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
System.out.print("请输入年份:");
int year = scan.nextInt();
String[] animals = new String[] {
"猪","鼠","牛","虎","兔","龙","蛇",
"马","羊","猴","鸡","狗"};
System.out.println(animals[(year-3) % 12] + "年");
}
}
1 打印1-100之间13的倍数,使用for循环
package com.atguigu.exer3;
public class ForExer1 {
public static void main(String[] args) {
for(int i = 1;i <= 100;i++) {
if(i % 13 == 0) {
System.out.print(i + " ");
}
}
System.out.println();
}
}
2 使用双重循环打印20 * 8的矩形,使用for循环实现
package com.atguigu.exer3;
public class ForExer2 {
public static void main(String[] args) {
for(int i = 0;i < 20;i++) {
for(int j = 0;j < 8;j++) {
System.out.print("*");
}
System.out.println();
}
}
}
3 用for循环计算1000以内偶数的和
package com.atguigu.exer3;
public class ForExer3 {
public static void main(String[] args) {
int sumOdd = 0;
for(int i = 0;i <= 1000;i++) {
sumOdd += i;
}
System.out.println("偶数的和为" +sumOdd);
}
}
4 打印1-100之间非13的倍数,使用continue语句
package com.atguigu.exer3;
public class ForExer4 {
public static void main(String[] args) {
for(int i = 1;i < 100;i++) {
if(i % 13 == 0) {
continue;
}
if(i % 10 ==0) {
System.out.println();
}
System.out.print(i + " ");
}
}
}
1 猜数字游戏
随机生成一个100以内的数,猜数字游戏:
从键盘输入数,如果大了提示,大了,如果小了,提示小了,如果对了,就不再猜了,并统计一共猜了多少次
package com.atguigu.exer3;
import java.util.Scanner;
public class GuessNumber {
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
System.out.print("请输入0-99之间的数 :");
int userNumber = scan.nextInt();
int count = 0;
//0-99的随机数
int randomNumber = (int)(Math.random()*100);
if(userNumber < 0 || userNumber > 99) {
System.out.println("非法输入");
}else {
while(true) {
count += 1;
if(userNumber == randomNumber) {
System.out.println("猜对了");
break;
}else if(userNumber > randomNumber) {
System.out.println("猜大了");
}else {
System.out.println("猜小了");
}
System.out.print("请输入0-99之间的数 :");
userNumber = scan.nextInt();
}
System.out.println("总共猜了" + count + "次");
}
}
}
2 打印1-100之间数,其中3、5、7的倍数不打印(continue)
package com.atguigu.exer3;
public class PrintNumber {
public static void main(String[] args) {
for(int i = 1;i <= 100;i++) {
if(i % 3 == 0 || i % 5 == 0 ||i % 7 == 0) {
continue;
}
if( i % 10 == 0) {
System.out.println();
}
System.out.println(i + " ");
}
}
}
3 编程 找出1000以内的所有完数
一个数如果恰好等于它的因子之和,这个数就称为"完数"。(因子:除去这个数本身的约数)
package com.atguigu.exer3;
public class SearchNumber {
public static void main(String[] args) {
for(int i = 1;i < 1000;i++) {
int temp = i;//temp 判断因子
//写循环 找出 i的因子
for(int j = 1;j < i;j++) {
if (i % j == 0) {
temp -= j;
}
}
if(temp == 0) {
System.out.println(i + " ");
}
if( i % 100 == 0) {
System.out.println();
}
}
}
}
4 写一个程序,找出4位数的所有吸血鬼的数字
例如:1260=2160 1827=2187
public class Test1 {
//没看懂
public static void main(String[] args) {
for (int num = 1001; num < 10000; num++) {
math(num);
}
}
public static void math(int num) {
int[] temp1 = new int[2];
int[] temp2 = new int[2];
int a = num / 1000;
int b = num / 100 % 10;
int c = num / 10 % 10;
int d = num % 10;
int[] data = {
a, b, c, d };
for (int i = 0; i < data.length; i++) {
for (int j = 0; j < data.length; j++) {
if (i == j) {
continue;
}
temp1[0] = data[i];
temp1[1] = data[j];
for (int m = 0; m < data.length; m++) {
if (m != i && m != j) {
temp2[0] = data[m];
for (int n = 0; n < data.length; n++) {
if (n != i && n != j && n != m) {
temp2[1] = data[n];
multi(data, temp1, temp2);
}
}
}
}
}
}
}
public static int toInt(int[] temp) {
int m = 0;
int[] temp1 = new int[temp.length];
for (int i = 0; i < temp.length; i++) {
temp1[i] = temp[i] * (int) Math.pow(10, temp.length - 1 - i);
}
for (int i = 0; i < temp1.length; i++) {
m += temp1[i];
}
return m;
}
public static void multi(int[] temp, int[] temp1, int[] temp2) {
int i = toInt(temp1);
int j = toInt(temp2);
int k = toInt(temp);
if (k == i * j) {
System.out.println(k + "=" + i + "*" + j);
}
}
}
5 生成13位条形码
package com.atguigu.exer3;
import java.util.Scanner;
public class MakeSpecialCode {
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
System.out.print("请输入12位数字编号:");
long number = scan.nextLong();
long temp = number;
long[] array = new long[12];
int i = 0;
while(temp > 0) {
array[i] = temp % 10;
temp /= 10;
i++;
}
long sumOdd =0, sumEven = 0;
for(int j = 0;j < array.length;j++) {
if(j % 2 == 0) {
sumEven += array[j];
}else {
sumOdd += array[j];
}
}
System.out.println("当前偶数之和为 " + sumEven + ",当前奇数之和为" + sumOdd);
long oddEvenOp = ( 10 - ((sumOdd + 3*sumEven) % 10)) % 10;
System.out.println("计算出来的第13为号码为:" + oddEvenOp);
String resultNumber = "";
for(int j = 11;j >= 0;j--) {
resultNumber += array[j];
}
System.out.println("结果的编号序号为:" + resultNumber + oddEvenOp);
}
}
6 实现判断一个4位整数,统计出此整数里面包含多少个偶数,多少个奇数的功能
package com.atguigu.exer3;
import java.util.Scanner;
public class CountOddEven {
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
System.out.print("请输入四位整数:");
int number = scan.nextInt();
int sumOdd = 0,sumEven = 0;
if(number < 1000 || number > 10000) {
System.out.println("输入非法");
}else {
int temp;
while(number > 0) {
temp = number % 10;
if(temp % 2 == 0) {
sumEven++;
}else {
sumOdd++;
}
number /= 10;
}
System.out.println("奇数个数为:" + sumOdd + ",偶数个数为:" + sumEven);
}
}
}
7 有3个整数,给出提示信息:
能否创建三角形;两边之和大于第三边 三个条件都要写
如果能构建三角形,提示是直角三角形还是等边三角形等腰三角形还是普通三角形;
最后输出三角形面积
package com.atguigu.exer3;
import java.util.Scanner;
public class Triangle {
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
System.out.print("请输入第一个整数:");
int a = scan.nextInt();
System.out.print("请输入第二个整数:");
int b = scan.nextInt();
System.out.print("请输入第三个整数:");
int c = scan.nextInt();
double p ;//三角形周长
double area;//三角形面积
boolean judge1 = method(a,b,c);
boolean judge2 = method(a,c,b);
boolean judge3 = method(b,c,a);
if(judge1 && judge2 && judge3) {
if(a == b && b == c) {
System.out.println("等边三角形");
}else if(a == b || b == c || a == c) {
System.out.println("等腰三角形");
//不存在 等腰直角三角形的情况
}else if(a*a + b*b == c*c ||a*a + c*c ==b*b ||b*b + c*c ==a*a) {
System.out.println("直角三角形");
}else {
System.out.println("普通三角形");
}
p = (a+b+c)/2;
area = Math.sqrt(p*(p-a)*(p-b)*(p-c));
System.out.println("三角形面积为 :" + area);
}else {
System.out.println("这三个整数不能构成三角形.");
}
}
public static boolean method(int a,int b,int c) {
boolean isFlag = false;
if( a + b > c) {
isFlag = true;
}
return isFlag;
}
}
尚硅谷-Java零基础教程