Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/378.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 确定数组列表是否已排序_Java_Sorting_Output - Fatal编程技术网

Java 确定数组列表是否已排序

Java 确定数组列表是否已排序,java,sorting,output,Java,Sorting,Output,我需要估计数组列表是否已排序(不排序) 对字符串进行排序时,它们是按字母顺序排列的。 我尝试使用方法来确定哪个字符串先出现 如果数组列表已排序,则返回true,否则返回false 代码: public boolean isSorted() { boolean sorted = true; for (int i = 1; i < list.size(); i++) { if (list.get(i-1).compareTo(list.get(i

我需要估计数组列表是否已排序(不排序)

对字符串进行排序时,它们是按字母顺序排列的。 我尝试使用方法来确定哪个字符串先出现

如果数组列表已排序,则返回true,否则返回false

代码:

public boolean isSorted()
{
    boolean sorted = true;        
    for (int i = 1; i < list.size(); i++) {
        if (list.get(i-1).compareTo(list.get(i)) != 1) sorted = false;
    }

    return sorted;
}
    ArrayList<String> animals = new ArrayList<String>();
    ArrayListMethods zoo = new ArrayListMethods(animals); 
    animals.add("ape");
    animals.add("dog");
    animals.add("zebra");

    //test isSorted
    System.out.println(zoo.isSorted());
    System.out.println("Expected: true");

    animals.add("cat");
    System.out.println(zoo.isSorted());
    System.out.println("Expected: false");

    animals.remove("cat");
    animals.add(0,"cat");
    System.out.println(zoo.isSorted());
    System.out.println("Expected: false");

    **Output:**
    false
    Expected: true
    false
    Expected: false
    false
    Expected: false
public boolean isSorted()
{
布尔排序=真;
对于(int i=1;i
简易测试:

public boolean isSorted()
{
    boolean sorted = true;        
    for (int i = 1; i < list.size(); i++) {
        if (list.get(i-1).compareTo(list.get(i)) != 1) sorted = false;
    }

    return sorted;
}
    ArrayList<String> animals = new ArrayList<String>();
    ArrayListMethods zoo = new ArrayListMethods(animals); 
    animals.add("ape");
    animals.add("dog");
    animals.add("zebra");

    //test isSorted
    System.out.println(zoo.isSorted());
    System.out.println("Expected: true");

    animals.add("cat");
    System.out.println(zoo.isSorted());
    System.out.println("Expected: false");

    animals.remove("cat");
    animals.add(0,"cat");
    System.out.println(zoo.isSorted());
    System.out.println("Expected: false");

    **Output:**
    false
    Expected: true
    false
    Expected: false
    false
    Expected: false
ArrayList animals=new ArrayList();
ArrayListMethods zoo=新的ArrayListMethods(动物);
动物。添加(“猿”);
动物。加上(“狗”);
动物。添加(“斑马”);
//测试分类
System.out.println(zoo.isSorted());
System.out.println(“预期:true”);
动物。加上(“猫”);
System.out.println(zoo.isSorted());
System.out.println(“预期:false”);
动物。移除(“猫”);
动物。添加(0,“猫”);
System.out.println(zoo.isSorted());
System.out.println(“预期:false”);
**输出:**
假的
预期:正确
假的
期望值:false
假的
期望值:false
这个简单的测试只显示
1/3
覆盖率


如何解决这个问题。

您的方法中有一个小错误。应该是:

public boolean isSorted()
{
    boolean sorted = true;        
    for (int i = 1; i < list.size(); i++) {
        if (list.get(i-1).compareTo(list.get(i)) > 0) sorted = false;
    }

    return sorted;
}
public boolean isSorted()
{
布尔排序=真;
对于(int i=1;i0)sorted=false;
}
返回排序;
}
>0
而不是
=1
,您无法确定是否返回了
1

更改条件:

if (list.get(i - 1).compareTo(list.get(i)) >0)
您应该检查
>0
,而不是
=-1

查阅下列文件:

如果参数字符串等于此字符串,则值为0;如果此字符串在字典上小于字符串参数,则值小于0;如果该字符串在字典上大于字符串参数,则大于0的值。


您必须将compareTo expression更改为任意正数,这表示前一个元素按字母顺序排在当前元素之后,因此列表没有顺序

    public boolean isSorted()
    {
        boolean sorted = true;        
        for (int i = 1; i < list.size(); i++) {
            if (list.get(i-1).compareTo(list.get(i)) > 0) sorted = false;
        }

        return sorted;
    }
public boolean isSorted()
{
布尔排序=真;
对于(int i=1;i0)sorted=false;
}
返回排序;
}

您需要检查未分类的案例

这意味着,如果假设按升序排序,未排序的情况将是在索引
i
处发现一个元素与索引
i-1
其中
element[i]

试试这个

import java.util.ArrayList;
import java.util.Collections;
import java.util.List;

public class Sort {
public static void main(String []args) {
    List<String> l1=new ArrayList<String>();
    List<String> l2=new ArrayList<String>();
    l1.add("a");
    l1.add("b");
    l1.add("c");

    l2.add("b");
    l2.add("c");
    l2.add("a");

     if(isSorted(l1)){
         System.out.println("already sorted");
     }
    else{
         Collections.sort(l1);
     }
   }
public static boolean isSorted(List<String> list){
    String previous = "";
    for (String current: list) {
        if (current.compareTo(previous) < 0)
            return false;
        previous = current;
    }
    return true;
}
}
import java.util.ArrayList;
导入java.util.Collections;
导入java.util.List;
公共类排序{
公共静态void main(字符串[]args){
列表l1=新的ArrayList();
列表l2=新的ArrayList();
l1.添加(“a”);
l1.添加(“b”);
l1.添加(“c”);
l2.添加(“b”);
l2.添加(“c”);
l2.添加(“a”);
if(isSorted(l1)){
System.out.println(“已排序”);
}
否则{
集合。排序(l1);
}
}
公共静态布尔值已排序(列表){
字符串previous=“”;
用于(当前字符串:列表){
如果(当前与上一个相比)<0
返回false;
先前=当前;
}
返回true;
}
}

您可以编写一个实用的方法,如
isSortedList(列表)


public static boolean isSortedList(列表)您如何通过仅检查两个元素来确定列表是否已排序?如果这两个元素已排序,而其他元素未排序,该怎么办?for循环语句中存在语法错误,因此编辑它您根本不需要
排序的
变量。如果
检查失败,则立即返回false。