【深基3.例2】数的性质
题目描述
一些整数可能拥有以下的性质:
- 性质 1:是偶数;
- 性质 2:大于 4 4 4 且不大于 12 12 12。
小 A 喜欢这两个性质同时成立的整数;Uim 喜欢这至少符合其中一种性质的整数;八尾勇喜欢刚好有符合其中一个性质的整数;正妹喜欢不符合这两个性质的整数。现在给出一个整数 x x x,请问他们是否喜欢这个整数?
输入格式
输入一个整数 x ( 0 ≤ x ≤ 1000 ) x(0\le x \le 1000) x(0≤x≤1000)
输出格式
输出这
4
4
4 个人是否喜欢这个数字,如果喜欢则输出 1
,否则输出 0
,用空格分隔。输出顺序为:小 A、Uim、八尾勇、正妹。
样例 #1
样例输入 #1
12
样例输出 #1
1 1 0 0
分析:对输入的数字num进行两次判断,并对这两次判断的真值进行运算。
import java.util.Arrays;
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int num = sc.nextInt();
int arr[] = new int[4];
Arrays.fill(arr, 0);
boolean q11 = q1(num);
boolean q22 = q2(num);
if (q11 || q22) {
arr[0] = 1;
}
if (q11 && q22) {
arr[1] = 1;
}
if (q11 ^ q22) { //异或运算
arr[2] = 1;
}
if (!(q11 || q22 ) ) {
arr[3] = 1;
}
for (int n : arr) {
System.out.print(n + " ");
}
}
public static boolean q1(int num){
if(num % 2 == 0){
return true;
}return false;
}
public static boolean q2 (int num){
if(num > 4 && num <= 12){
return true;
}return false;
}
}
but…
有一个测试错误。
在我不懈努力之下, 发现代码中 “&” 与 “&&” 出现了混淆。
查阅一番后,总结出以下:
运算符 | 运算 | 范例 | 结果 |
---|---|---|---|
! | 非 | !true | false |
& | 与 | true & true | true |
& | 与 | true & false | false |
& | 与 | false & false | false |
| | 或 | true | true | true |
| | 或 | true | false | true |
| | 或 | false | false | false |
^ | 异或 | true ^ true | false |
^ | 异或 | true ^ false | true |
^ | 异或 | false ^ false | false |
&& | 短路与 | true && true | true |
&& | 短路与 | true && false | false |
&& | 短路与 | false && false | false |
|| | 短路或 | true || true | true |
|| | 短路或 | true || false | true |
|| | 短路或 | false || false | false |
并且代码中还有&、| 的混乱使用。(居然只有一个报错
修改后的代码是
import java.util.Arrays;
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int num = sc.nextInt();
int arr[] = new int[4];
Arrays.fill(arr, 0);
boolean q11 = q1(num);
boolean q22 = q2(num);
if (q11 | q22) {
arr[0] = 1;
}
if (q11 & q22) {
arr[1] = 1;
}
if (q11 ^ q22) {
arr[2] = 1;
}
if (!(q11 | q22)) {
arr[3] = 1;
}
for (int n : arr) {
System.out.print(n + " ");
}
}
public static boolean q1(int num){
if(num % 2 == 0){
return true;
}return false;
}
public static boolean q2 (int num){
if(num > 4 & num <= 12){
return true;
}return false;
}
}
这样就可以了
---------------------------蓝桥杯备赛系列正在不断更新中,欢迎各位大佬指导---------------------------------------