java—调用布尔表达式方法的问题

mklgxw1f  于 2021-06-27  发布在  Java
关注(0)|答案(2)|浏览(361)

**结案。**此问题不可复制或由打字错误引起。它目前不接受答案。
**想改进这个问题吗?**更新问题,使其成为堆栈溢出的主题。

10天前关门了。
改进这个问题
我最近学了编程,正在练习做一些练习,在这个练习中,我被要求创建一个方法(arr,ascendnig),根据升序(true=asc)的布尔表达式,通过升序或降序对任何给定数组进行排序。
下面是我用一些注解写的代码来表达我的意图,我在执行时遇到了一些问题(不是由编译器编写的,代码没有完成我想要它做的事情)
当使用单个“=”符号时,代码只编译方法的真部分。
我尝试使用“=”,它确实编译了false部分,但是当调用该方法时,它只进行了正常排序,而没有遍历其余的代码。为了检查for循环是否按预期工作,以及值是否被传输到arr[]中,我执行了println命令,并且值是正确的,但是在调用方法时,它并不关心代码的这一部分。
任何帮助,使我能够理解的逻辑和修复我的代码将不胜感激!

public static void sort(double[] arr, boolean ascending) {

    if (ascending = true) {
        Arrays.sort(arr);

    }

    else if (ascending = false ) {

        int temp = arr.length;
        Arrays.sort(arr);

        //Sort the ascended sorted array into a new array by swapping their index values

        double [] tempArr = new double[arr.length];

        for (int i=0; i<arr.length; i++) {
            tempArr[i] = arr[temp-1];
            temp--;

        }

        // Give the temporary descending array values back to the method variable

        arr = tempArr;
        System.out.println("expression is false4 " + Arrays.toString(arr));
    }

public static void main(String[] args) {

    double[] arr2 = {9,2,5};
    System.out.println("The array before sorting is " + Arrays.toString(arr2));
    sort(arr2, 10<4);
    System.out.println("The array after sorting is " + Arrays.toString(arr2) );
ckx4rj1h

ckx4rj1h1#

在java中,=和==有不同的含义。
=是赋值运算符,而==是基元类型和对象引用的相等关系。
在你的情况下,你不需要两者,因为 if 运算符接受任何可以计算为 boolean 类型。
所以,我们可以重写

if (ascending = true) {
        Arrays.sort(arr);

    }

    else if (ascending = false ) {

具有

if (ascending) {
        Arrays.sort(arr);
    } else {
mctunoxg

mctunoxg2#

在检查升序的两个地方,都有single=。single=用于赋值,double==用于比较。
在本例中,您将在第一个if语句中将变量ascending设置为true:

if (ascending = true) {

赋值本身的计算结果为true,因此执行该分支。
然后在else中对false执行相同的操作,但这当然会计算为false,因此跳过分支:

else if (ascending = false ) {

您可以将两者都更改为==或完全跳过==变量,因为该变量已经是布尔值,请执行以下操作:

if (ascending) {
    //....
} else {
   //....

相关问题