Java运算符 二进制计算 素数问题 九九乘法表 月份问题 分解质因数 完全数问题 天数计算 图形输出

1.代码观察

int a = 6--;
System.out.println(a);

在Java中,后置递减运算符 -- 只能在整型(int)和长整型(long)变量上使用,而且必须将 -- 放在变量值的后面。因此,6-- 是非法的,Java编译器会报错。

正确代码如下

int a = 6;
a--;
System.out.println(a);

输出结果为5

2.代码分析

System.out.println(5&9);
//0000 0101
//0000 1001
//0000 0001
结果为1
System.out.println(5|9);
//0000 0101
//0000 1001
//0000 1101
结果为13
System.out.println(5^9);
//0000 0101
//0000 1001
//0000 1100
结果为12
System.out.println(~-5);
//0000 0101(5)
//1111 1011(-5)
//0000 0100(~-5)
结果为4
System.out.println(5<<2);
//0000 0101
//0001 0100(向左移两位)
结果为20
System.out.println(-5<<2);
//1111 1011
//1110 1100(补码=反码+1)
//1110 1011(反码=原码取反 符号位不变)
//1001 0100(原码)
结果为-20
System.out.println(-5>>2);
//1111 1011
//1111 1110(补码)
//1111 1101(反码)
//1000 0010(原码)
结果为-2
System.out.println(-5>>>2);
//1111 1011
//0011 1110(补码)
//0011 1101(反码)
//0100 0010(原码)
结果为1073741822
System.out.println(5>>2);
//0000 0101
//0000 0001
结果为1
System.out.println(5>>34);
//0000 0101
//0000 0001
//34>32 右移34%32=2位
结果为1
System.out.println(97=='a');
//在ASCII编码中,字符'a'的编码值是97。
因此,表达式97 == 'a'在大多数编程语言中将会返回true,
表示97等于字符'a'的ASCII码。
System.out.println(5.0==5);
//会输出false
这是因为 5.0 是一个 double 类型的浮点数,而 5 是一个 int 类型的整数。
尽管它们在数值上是相等的,但在Java中,它们是不同的数据类型。
Java的自动类型转换不会自动将整数转换为浮点数来进行比较,因此这个比较会返回false。
可写为System.out.println(5.0=(double)5);
System.out.println(4>5 ^ 'c'>'a');
//4 > 5 的结果是 false,'c' 大于 'a' 的结果是 true。所以 'c' > 'a' 为 true。
当 false 和 true 用 ^ 运算时,结果是 true。
System.out.println((int)(char)(byte)-1);
结果为65535 类型转换

3.指定位置设置为1

问题描述:

将参数v的第n位置设为1,然后返回该结果值。

代码结构:

package com.briup.day2;
​
public class Test3_SetOne {
// ⽅法声明如下:
public static int setBit(int v,int n){
// 提示:使⽤ | 及 <<
// 补全代码
  return v | (1 << n-1);
 }
public static void main(String[] args) {
int r = setBit(10,3);
System.out.println("r: " + r);
//0000 1010
//0000 0001
//0000 0100(向左移n-1位)
//0000 1110(v变为14)
 }
}
//将参数v的第n位置设为1,然后返回该结果值。
// 例如:setBit(10,3)返回14,因为10的二进制表示为1010,将第3位置为1后,变为1011,即14。
​

4.指定位置设置为0

问题描述:

将参数v的第n位置为0,然后返回该结果值。

代码结构:

package com.briup.day2;
​
public class Test4_SetZero {
// ⽅法声明如下:
public static int setZero(int v,int n){
// 提示:使⽤ ~ 及 <<
// 补全代码
  return v & ~ (1 << n-1);
 }
public static void main(String[] args) {
int r = setZero(10,2);
System.out.println("r: " + r);
//0000 1010
//0000 0001
//0000 0010(括号里的进行~运算)
//1111 1101
//0000 1010
//0000 1000
}
}

5.代码分析

分析下⾯⼏段代码,写出输出结果,最后运⾏程序进⾏验证

(1)

int b=5;
if(b>4)
System.out.println(b);
else
b--;
System.out.println(b);

输出 5 5

(2)

public static void main(String[] args) {
​
        int b = 6;
        if (b > 5) {
            b--;
            System.out.println("b大于4");
        }
        else {
            System.out.println("b不大于4");
            }
    }
}

输出 b不大于4

(3)

int age=45;
if(age>20) {
 System.out.println("年轻⼈");
 }else if(age>40){
 System.out.println("中年⼈");
 }else if(age>60){
 System.out.println("⽼年⼈");

输出 年轻人

(4)

int a=80;
switch(a) {
case 90:{
System.out.println("优秀");
}
case 80:{
System.out.println("⼀般");
}
case 60:{
System.out.println("及格");
break;
}
case 50:{
System.out.println("基础弱");
}
}

输出 一般 及格

(5)

int count=0;
while(count>0);
{
System.out.println(count);
}

输出 0

(6)

for (int i = 0; i < 5; i++) {
System.out.print(i);
i*=0.1;
}
System.out.println("循环结束");

输出 11111......(无限循环)

(7)

for(int i=0;i<3;i++) {
System.out.println(i);
if(i==1) {
continue;
}
System.out.println("continue后的输出语句");
}

输出

0 continue后的输出语句 1 2 continue后的输出语句

(8)

for (int i = 0; i < 3; i++) {
System.out.println(i);
if (i == 1) {
return;
}
System.out.println("return后的输出语句");
}

输出

0 return后的输出语句 1

6.九九乘法表

问题描述:

编写⼀个Java程序,实现如下效果的九九乘法表

代码结构:

for(int i = 1; i <= 9; i++) {
                for(int j = 1; j <= i; j++) {
                    System.out.print(j + "*" + i + "=" + (i * j) + "\t");
                }
                System.out.println();
                }

7.素数问题

题目:

请编写一个Java程序,判断101-200之间有多少个素数,并输出所有素数

public class PrimeNumbers {
public static void main(String[] args) {
int count = 0;
for (int i = 101; i <= 200; i++) {
if (isPrime(i)) {
System.out.print(i + " ");
count++;
}
}
System.out.println("\n101-200之间共有" + count + "个素数");
}
public static boolean isPrime(int num) {
if (num <= 1) return false;
for (int i = 2; i <= Math.sqrt(num); i++) {
if (num % i == 0) return false;
}
return true;
}
}

8.月份计算

题目

请编写一个Java程序,实现从键盘输入月份,判断该月份属于哪个季节 【要求】 如果月份不在1-12之

间,则报错:输入月份有误 匹配月份,输出对应的季节 12-2冬 3-5春 6-8夏 9-11秋 使用java.util.Scanner类完成

import java.util.Scanner;
public class Season {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.println("请输入月份:");
int month = scanner.nextInt();
switch(month) {
case 12:
case 1:
case 2:
System.out.println("冬季");
break;
case 3:
case 4:
case 5:
System.out.println("春季");
break;
case 6:
case 7:
case 8:
System.out.println("夏季");
break;
case 9:
case 10:
case 11:
System.out.println("秋季");
break;
default:
System.out.println("输入月份有误");
}
}
}

9.天数计算

题目

请编写一个Java程序,实现从键盘中输入年份 月份 日期,输出这一天是该年的第几天 【要求】 输入的

年份、月份、日期均为数字,不足10的用0x表示,如:1月1日为01 01 输入的年份、月份、日期之间用

空格隔开,如:2023 04 27

Scanner scanner = new Scanner(System.in);
System.out.println("请输入年份 月份 日期(用空格隔开):");
int year = scanner.nextInt();
int month = scanner.nextInt();
int day = scanner.nextInt();
int[] days = {31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};
if (isLeapYear(year)) {
days[1] = 29;
}
int dayOfYear = 0;
for (int i = 0; i < month - 1; i++) {
dayOfYear += days[i];
}
dayOfYear += day;
System.out.println("这一天是该年的第" + dayOfYear + "天");
}
public static boolean isLeapYear(int year) {
return (year % 4 == 0 && year % 100 != 0) || (year % 400 == 0);
  1. 完全数问题

题目

请编写一个Java程序,实现输入一个数,判断其是否为完全数 若一个自然数,恰好与除去它本身以外的

一切因数的和相等,这种数叫做完全数。

import java.util.Scanner;
public class PerfectNumber {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.println("请输入一个数:");
int num = scanner.nextInt();
if (isPerfectNumber(num)) {
System.out.println(num + " 是完全数");
} else {
System.out.println(num + " 不是完全数");
}
}
public static boolean isPerfectNumber(int num) {
int sum = 0;
for (int i = 1; i <= num / 2; i++) {
if (num % i == 0) {
sum += i;
}
}
return sum == num;
}
}
  1. 图形输出

题目

请编写一个Java程序,实现下面图形的输出

markdown复制代码 
   *
  ***
 *****
*******
 *****
  ***
   *
public class DiamondPattern {
public static void main(String[] args) {
int n = 4; // 控制行数
for (int i = 1; i <= n; i++) {
for (int j = 1; j <= n - i; j++) {
System.out.print(" ");
}
for (int j = 1; j <= 2 * i - 1; j++) {
System.out.print("*");
}
System.out.println();
}
for (int i = n - 1; i >= 1; i--) {
for (int j = 1; j <= n - i; j++) {
System.out.print(" ");
}
for (int j = 1; j <= 2 * i - 1; j++) {
System.out.print("*");
}
System.out.println();
}
}
}
  1. 分解质因数

题目

请编写一个Java程序,实现输入一个15以内的正整数,对该正整数进行分解质因数,输出该整数与质因

数的等式。

import java.util.Scanner;
public class PrimeFactorization {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.println("请输入一个15以内的正整数:");
int num = scanner.nextInt();
if (num <= 0 || num > 15) {
System.out.println("输入的数字不在有效范围内");
} else {
System.out.print(num + " = ");
for (int i = 2; i <= num; i++) {
while (num % i == 0) {
System.out.print(i);
num /= i;
if (num != 1) {
System.out.print(" * ");
            }
          }
        }
      }
   }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值