**结案。**此问题不可复制或由打字错误引起。它目前不接受答案。
**想改进这个问题吗?**更新问题,使其成为堆栈溢出的主题。
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) );
2条答案
按热度按时间ckx4rj1h1#
在java中,=和==有不同的含义。
=是赋值运算符,而==是基元类型和对象引用的相等关系。
在你的情况下,你不需要两者,因为
if
运算符接受任何可以计算为boolean
类型。所以,我们可以重写
具有
mctunoxg2#
在检查升序的两个地方,都有single=。single=用于赋值,double==用于比较。
在本例中,您将在第一个if语句中将变量ascending设置为true:
赋值本身的计算结果为true,因此执行该分支。
然后在else中对false执行相同的操作,但这当然会计算为false,因此跳过分支:
您可以将两者都更改为==或完全跳过==变量,因为该变量已经是布尔值,请执行以下操作: