Java语言基础编程练习
1. 运算符练习
提示用户输入正整数类型的秒数,拆分秒数后输出x小时x分x秒。 如:输入7199,输出1小时59分59秒
System.out.println("请输入正整数类型的秒数:");
Scanner scanner = new Scanner(System.in);
int num = scanner.nextInt();
System.out.println((num/3600)+"小时"+((num%3600)/60)+"分"+(num%60)+"秒");
2.流程控制语句练习
出租车计费方式:由里程钱数和等候时间钱数相加得出。里程数前3公里13元,超过3公里到15公里部分每公里2元,15公里以上部 分每公里3元。等候时间每2分半1元,不足部分不要钱。输入公里数和等候秒数,输出车费。
Scanner scanner = new Scanner(System.in);
System.out.println("公里数:");
Double mile = scanner.nextDouble();
System.out.println("等候秒数:");
int s = scanner.nextInt();
Double cost;
if (mile <= 3.0){
cost = 13.0 + (s/150)*1.0;
}else if (mile > 3.0 && mile <= 15.0){
cost = 13.0 + (s/150)*1.0 + (mile-13.0)*2.0;
}else {
cost = 13.0 + (s/150)*1.0 + (mile-15.0)*3.0 + (15-3)*2.0;
}
System.out.println(cost);
使用for循环打印1-100的所有奇数,使用三种方式。
//方法1 奇数不能被2整除
for (int i = 1; i <= 100; i+=2) {
System.out.println(i);
}
//方法2 等差数列
for (int i = 1; i <= 100; i++) {
if (i%2 != 0){
System.out.println(i);
}
}
//方法3 通项公式 2*i-1
for (int i = 1; i <= 50; i++) {
System.out.println(i*2-1);
}
使用for循环实现累加:1+2+...+10000=?最后打印出来
int sum = 0;
for (int i = 1; i <= 10000; i++) {
sum +=i;
}
System.out.println(sum);
使用for循环打印三位数中所有水仙花数。所谓“水仙花数”即一个整数满足其值等于各个数位的立方和。如:153是一个水仙花数,因为153=1^3 + 5^3 + 3^3
for (int i = 100; i <= 999; i++) {
if ((Math.pow(i%10,3)+Math.pow(i/100,3)+ Math.pow((i%100)/10,3)) == i) {
System.out.println(i);
}
}
猜数字游戏。随机生成数字n(1-100), 等待用户输入猜测数据, 根据用户的输入比较输出 猜大了,猜小了,猜对了, 如果用户猜对了就结束游戏
System.out.println("请输入一个数字 (1~100)");
Scanner scanner = new Scanner(System.in);
int num = scanner.nextInt();
//生成随机数常见方法
//1.Random
Random r = new Random();
int num1 = r.nextInt(100)+1;
//2.Math.random
//int num2 = (int) (Math.random()*100+1);
while (true){
if (num1 == num){
System.out.println("猜对了!");
break;
}else if (num > num1){
System.out.println("猜大了!");
}else {
System.out.println("猜小了!");
}
System.out.println("请输入猜测数字");
num = scanner.nextInt();
}
使用双重for循环分别打印以下图案
for (int i = 0; i < 5; i++) {
for (int j = 0; j < 5; j++) {
System.out.print("*");
}
System.out.println();
}
System.out.println("--------------");
for (int i = 0; i < 5; i++) {
for (int j = 0; j <= i; j++) {
System.out.print("*");
}
System.out.println();
}
System.out.println("--------------");
for (int i = 0; i < 5; i++) {
for (int j = 0; j < 5-i; j++) {
System.out.print("*");
}
System.out.println();
}
System.out.println("--------------");
for (int i = 0; i < 5; i++) {
for (int j = 0; j < 5-i; j++) {
System.out.print(" ");
}
for (int j = 0; j < 2*i+1; j++) {
System.out.print("*");
}
System.out.println();
}
使用双重for循环打印九九乘法表
for (int i = 1; i < 10; i++) {
for (int j = 1; j <= i; j++) {
System.out.print(i+"*"+j+"="+i*j+" ");
}
System.out.println();
}
使用双重for循环打印2~100之间的所有素数。当一个数只能被1和它本身整除时,这个数就叫做素数或质数。
for (int i = 2; i < 100; i++) {
boolean b = true;
for (int j = 2; j <= Math.sqrt(i); j++) {
if (i%j == 0){
b = false;
}
}
if (b){
System.out.println(i);
}
}
使用while循环计算调和数列的和并打印,即: 1/1 + 1/2 + ... + 1/n
System.out.println("输入n");
Scanner scanner = new Scanner(System.in);
int n = scanner.nextInt();
int i = 1;
double sum = 0.0;
while (i <= n){
sum+=1.0/i;
i++;
}
System.out.println(sum);
提示用户输入一个任意位数的正整数然后反向输出
System.out.println("请输入一个正整数");
Scanner scanner = new Scanner(System.in);
int num = scanner.nextInt();
int res = 0;
int temp = num;
while (temp>0){
res = res*10 + temp%10;
temp /=10;
}
System.out.println(res);
3.数组及应用练习
声明一个长度为5元素类型为int类型的一维数组,打印数组中所有元素值;
• 使用元素11、22、33、44分别对数组中前四个元素赋值后再次打印;
• 将元素55插入到下标为0的位置,原有元素向后移动,再打印所有元素值;
• 将元素55从数组中删除,删除方式为后续元素向前移动,最后位置置为0 并打印;
• 查找数组中是否存在元素22,若存在则修改为220后再次打印所有元素;
//• 声明一个长度为5元素类型为int类型的一维数组,打印数组中所有元素值
int[] arr = new int[5];
for (int i = 0; i < arr.length; i++) {
System.out.print(arr[i]+" ");
}
System.out.println();
for (int i : arr) {
System.out.print(i+" ");
}
System.out.println();
System.out.println(Arrays.toString(arr));
//• 使用元素11、22、33、44分别对数组中前四个元素赋值后再次打印;
for (int i = 0; i < arr.length-1; i++) {
arr[i] = (i+1)*11;
}
System.out.println(Arrays.toString(arr));
//• 将元素55插入到下标为0的位置,原有元素向后移动,再打印所有元素值;
for (int i = arr.length-1; i >= 1; i--) {
arr[i] = arr[i-1];
}
arr[0] = 55;
System.out.println(Arrays.toString(arr));
//• 将元素55从数组中删除,删除方式为后续元素向前移动,最后位置置为0并打印;
for (int i = 0; i < arr.length-1 ; i++) {
arr[i] = arr[i+1];
}
arr[4] = 0;
System.out.println(Arrays.toString(arr));
//查找数组中是否存在元素22,若存在则修改为220后再次打印所有元素;
for (int i = 0; i < arr.length; i++) {
if (arr[i] == 22){
arr[i] = 220;
}
}
System.out.println(Arrays.toString(arr));
声明一个初始值为11 22 33 44 55的一维数组并打印所有元素
• 声明一个长度为3元素类型为int类型的一维数组并打印所有元素
• 实现将第一个数组中间3个元素赋值到第二个数组中
• 再次打印第二个数组中的所有元素
//声明一个初始值为11 22 33 44 55的一维数组并打印所有元素
int[] arr = {11, 22, 33, 44, 55};
System.out.println(Arrays.toString(arr));
//声明一个长度为3元素类型为int类型的一维数组并打印所有元素
int[] arr1 = new int[3];
System.out.println(Arrays.toString(arr1));
//实现将第一个数组中间3个元素赋值到第二个数组中
//再次打印第二个数组中的所有元素
System.arraycopy(arr,1,arr1,0,3);
System.out.println(Arrays.toString(arr1));
编程统计用户输入任意一个正整数中每个数字出现次数的统计并打印。
• 如:123123 => 1出现2次,2出现2次,3出现2次
//• 编程统计用户输入任意一个正整数中每个数字出现次数的统计并打印。
//• 如:123123 => 1出现2次,2出现2次,3出现2次
System.out.println("输入一个整数数字:");
Scanner scanner = new Scanner(System.in);
int num = scanner.nextInt();
int[] arr = new int[10];
while (num > 0) {
arr[num%10] += 1;
num /= 10;
}
for (int i = 0; i < arr.length; i++) {
if (arr[i] != 0){
System.out.println(i+"出现了"+arr[i]+"次");
}
}
提示用户输入学生的人数以及每个学生的考试成绩并打印出来。
• 计算该班级的总分和平均分并打印出来。
//• 提示用户输入学生的人数以及每个学生的考试成绩并打印出来。
//• 计算该班级的总分和平均分并打印出来
System.out.println("输入学生人数:");
Scanner scanner = new Scanner(System.in);
int num = scanner.nextInt();
Double sum = 0.0;
Double ave = 0.0;
Double[] arr = new Double[num];
for (int i = 0; i < arr.length; i++) {
System.out.println("输入第"+(i+1)+"个学生成绩");
arr[i] = scanner.nextDouble();
sum += arr[i];
}
ave = sum/arr.length;
System.out.println("总分:"+sum);
System.out.println("平均分:"+ave);
java.util.Arrays类可以实现对数组中元素的遍历、查找、排序等操作
int[] arr = {11, 22, 33, 44, 55, 66};
//toString - 输出数组中的内容
System.out.println(Arrays.toString(arr));
//fill - 将参数指定元素赋值给数组中所有元素
Arrays.fill(arr,88);
System.out.println(Arrays.toString(arr));
//equals - 判断两个数组元素和顺序是否完全相同
int[] arr1 = {66,55,33,22,11};
int[] arr2 = {66,55,33,22,11};
boolean equals = Arrays.equals(arr2, arr1);
System.out.println(equals);
//sort - 对数组中元素进行从小到大排序
Arrays.sort(arr1);
System.out.println(Arrays.toString(arr1));
//binarySearch - 从数组中查找参数指定元素所在的位置
int i = Arrays.binarySearch(arr2, 33);
System.out.println(i);
根据用户输入的行数n输出对应行数的杨辉三角
System.out.println("请输入行数n:");
Scanner scanner = new Scanner(System.in);
int n = scanner.nextInt();
int[][] arr = new int[n][];
for (int i = 0; i < arr.length; i++) {
arr[i] = new int[i+1]; //针对二维数组中的每一行申请内存空间,否则if表达式报空指针异常
for (int j = 0; j < i+1; j++) {
if(j == 0 || j==i){
arr[i][j] = 1;
}else {
arr[i][j] = arr[i-1][j-1]+arr[i-1][j];
}
}
}
for (int i = 0; i < arr.length; i++) {
for (int j = 0; j < i+1; j++) {
System.out.print(arr[i][j]+" ");
}
System.out.println();
}