程序,它将解释为两个间隔的端点的数字轴上的坐标



我如何使用bitwise运算符而不是if statements来编写程序,它将解释为两个间隔的端点的数字轴上的坐标:A = [a1, a2] 和 B = [b1, b2]。程序从用户那里读取一个 int 类型的数字(例如 x),并打印是否为

• x ∈ A
• x ∈ B
• x ∈ A  B
• x ∈ B  A
• x ∈ A ∩ B
• x ∈ A ∪ B

例如,如果定义的间隔为 A = [2, 4] 和 B = [1, 6],并且读取的数字为 x = 5,则程序应打印如下内容:

Interval A = [2, 4]
Interval B = [1, 6]
Enter x 5
x in A: false
x in B: true
x in AB: false
x in BA: true
x in intersection of A and B: false
x in union of A and B: true

所以现在这就是我所拥有的


import org.w3c.dom.ranges.Range;
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.println("input a1");
int a1 = sc.nextInt();
System.out.println("input a2");
int a2 = sc.nextInt();
System.out.println("input b1");
int b1 = sc.nextInt();
System.out.println("input b2");
int b2 = sc.nextInt();
int a =a1&a2;
System.out.println("Interval A = " +a);
int b = b1 & b2;
System.out.println("Interval B = " + b);
System.out.println("input x");
int x = sc.nextInt();
System.out.println("Interval A = [" + a1 + "," + a2 + "]");
System.out.println("Interval B = [" + b1 + "," + b2 + "]");
System.out.println("Enter x " + x);
System.out.println("x in A: ");
System.out.println("x in B: ");
System.out.println("x in A/B: ");
System.out.println("x in B/A: ");
System.out.println("x in intersection of A and B: ");
System.out.println("x is union of A and B: ");
System.out.println("x in symm. diff. of A and B: ");

}
}

你可以写这个(只需在Java中使用Array):

import java.util.*;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.print("input a1: ");
int a1 = sc.nextInt();
System.out.print("input a2: ");
int a2 = sc.nextInt();
System.out.print("input b1: ");
int b1 = sc.nextInt();
System.out.print("input b2: ");
int b2 = sc.nextInt();
System.out.print("input x: ");
int x = sc.nextInt();

int arr1[] = new int [a2-a1+1];
int arr2[] = new int [b2-b1+1];

for (int i = 0, j = a1; j <= a2; i++, j++) {
arr1[i] = j;
}
for (int i = 0, j = b1; j <= b2; i++, j++) {
arr2[i] = j;
}

System.out.println("Interval A: [" + a1 + ", " + a2 + "]");
System.out.println("Interval B: [" + b1 + ", " + b2 + "]");
System.out.println("Enter x: " + x);
System.out.println("x in A: " + Exist(arr1, x));
System.out.println("x in B: " + Exist(arr2, x));
System.out.println("x in A/B: " + Relative_Complement(arr1, arr2, x));
System.out.println("x in B/A: " + Relative_Complement(arr2, arr1, x));
System.out.println("x in intersection of A and B: " + Intersection(arr1,arr2, x));
System.out.println("x is union of A and B: " + Union(arr1, arr2, x));
}
static boolean Exist(int arr[], int x){
for (int i = 0; i < arr.length; i++) {
if(x == arr[i])
return true;
}
return false;
}
static boolean Relative_Complement(int arr1[], int arr2[], int x){
int arr3[] = new int [arr1.length + arr2.length + 1];
int arr4[] = new int [arr1.length + arr2.length + 1];

for (int k = 0, i = 0; i < arr2.length; i++){
for (int j = 0; j < arr1.length; j++) {
if(arr2[i] == arr1[j]){
arr3[k++] = arr2[i];
}
}
}

for (int p = 0, j = 0; j < arr1.length; j++) {
if(!Exist(arr3, arr1[j])){
arr4[p++] = arr1[j];
}
}

return Exist(arr4, x);
}
static boolean Union(int arr1[], int arr2[], int x){
int arr3[] = new int [arr1.length + arr2.length];
int k = 0;
for (int i = 0; i < arr1.length; i++, k++)
arr3[k] = arr1[i];

for (int i = 0; i < arr2.length; i++, k++)
arr3[k] = arr2[i];
return Exist(arr3, x);
}
static boolean Intersection(int arr1[], int arr2[], int x){
int arr3[] = new int [arr1.length + arr2.length];
for (int i = 0; i < arr2.length; i++){
for (int j = 0; j < arr1.length; j++) {
if(arr2[i] == arr1[j]){
arr3[i] = arr2[i];
}
}
}

return Exist(arr3, x);
}
}

注意:根据您的问题,a1<b2。>

另外,如果您阅读HashSet则可以更轻松地解决此问题。

最新更新