Java 排序数组(升序或降序)-true或false
这篇文章详细介绍了如何确定数组的给定整数(升序或降序)是否已排序,并返回表示数组的整数。当给定的整数相等时(例如1、2、3、4、5),它也可以解释 我一直在试图找出如何在Main中将返回值从整数更改为布尔值,但没有任何效果。也就是说,如果数组按任何方向排序,则返回'true',否则返回'false'。我已经在这个问题上工作了两天了,学到了很多东西,但是我被卡住了。请帮忙 我尝试了System.out.println(isSorted(array.toString(“true”));看看这是否有效,但事实并非如此 我尝试过将方法返回值从int转换为boolean,然后将所有受影响的整数更改为true或false 我已尝试将Main方法中的数组引用重新指定为字符串“true”或“false”Java 排序数组(升序或降序)-true或false,java,arrays,Java,Arrays,这篇文章详细介绍了如何确定数组的给定整数(升序或降序)是否已排序,并返回表示数组的整数。当给定的整数相等时(例如1、2、3、4、5),它也可以解释 我一直在试图找出如何在Main中将返回值从整数更改为布尔值,但没有任何效果。也就是说,如果数组按任何方向排序,则返回'true',否则返回'false'。我已经在这个问题上工作了两天了,学到了很多东西,但是我被卡住了。请帮忙 我尝试了System.out.println(isSorted(array.toString(“true”));看看这是否有效
import java.util.Scanner;
import java.util.Arrays;
class Sorted {
public static int isSorted(int[] intArray) {
boolean sortedAsc = true;
boolean sortedDesc = true;
boolean equalValues=true;
int result = 0;
for (int i = 0; i < intArray.length-1; i++)
{
equalValues = equalValues && (intArray[i] == intArray[i+1]);
sortedAscending = sortedAscending && ((intArray[i] <= intArray[i+1]));
sortedDescending = sortedDescending && ((intArray[i] >= intArray[i+1]));
if(sortedAsc) result= 1;
if(sortedDesc) result = -1;
if(equalValues) result = 2;
return result;
}
public static void main(String[] args) {
// TODO code application logic here
int array[] = new int[4];
array[0]=1;
array[1]=2;
array[2]=3;
array[3]=4;
int sortedResult = isSorted(array);
System.out.println( sortedResult == 1 || sortedResult == -1 || sortedResult == 2 );
}
}
import java.util.Scanner;
导入java.util.array;
分类{
公共静态整数已排序(整数[]整数数组){
布尔值=真;
布尔值=真;
布尔等值=真;
int结果=0;
对于(int i=0;i
如果我理解正确,您要做的是查看数组是否按升序或降序排序,或者数组中的所有元素是否相等(也按方式排序)。如果是这种情况,我会将您的for
循环修改为:
for (int i = 0; i < intArray.length-1; i++)
{
equalValues = equalValues && (intArray[i] == intArray[i+1]);
sortedAscending = sortedAscending && ((intArray[i] <= intArray[i+1]));
sortedDescending = sortedDescending && ((intArray[i] >= intArray[i+1]));
}
根据您对代码的更新,您有一些错误,只需将方法isSorted
替换为以下方法,然后重试:
public static int isSorted(int[] intArray) {
boolean sortedAsc = true;
boolean sortedDesc = true;
boolean equalValues=true;
int result = 0;
for (int i = 0; i < intArray.length-1; i++)
{
equalValues = equalValues && (intArray[i] == intArray[i+1]);
sortedAsc = sortedAsc && ((intArray[i] <= intArray[i+1]));
sortedDesc = sortedDesc && ((intArray[i] >= intArray[i+1]));
}
if(sortedAsc) result= 1;
if(sortedDesc) result = -1;
if(equalValues) result = 2;
return result;
}
publicstaticint被排序(int[]intArray){
布尔值=真;
布尔值=真;
布尔等值=真;
int结果=0;
对于(int i=0;i
请将您的尝试放在问题中。我或其他人将指出在何处进行所需更改。欢迎使用SO。您引用了一篇文章,但未包含相关代码。如果没有这些详细信息,很难为您提供帮助。我很抱歉。我本以为已包含一个链接,指向出现问题的页面,但我可以看出这没有什么帮助。提前谢谢。@SomeDude感谢您的快速而彻底的反馈。我现在遇到的问题是,我得到了一个引用Main方法的“非法表达式开头”。我尝试在几个不同的地方添加分号。根据上面修订的代码,这是问题还是其他问题?谢谢。下面是我的回答获取,在我看来,当整数的上升或下降反转中间数组时,要捕获的方法可能缺少一个场景:测试输入:1 2 5 5 2 3 0正确输出:false您的代码输出:true
public static int isSorted(int[] intArray) {
boolean sortedAsc = true;
boolean sortedDesc = true;
boolean equalValues=true;
int result = 0;
for (int i = 0; i < intArray.length-1; i++)
{
equalValues = equalValues && (intArray[i] == intArray[i+1]);
sortedAsc = sortedAsc && ((intArray[i] <= intArray[i+1]));
sortedDesc = sortedDesc && ((intArray[i] >= intArray[i+1]));
}
if(sortedAsc) result= 1;
if(sortedDesc) result = -1;
if(equalValues) result = 2;
return result;
}