Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/390.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/string/5.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_String_Methods_Alphabetical - Fatal编程技术网

如何判断字符串是否按字母顺序自然排序-java

如何判断字符串是否按字母顺序自然排序-java,java,string,methods,alphabetical,Java,String,Methods,Alphabetical,我正在使用Java创建一个名为isOrdered的方法来判断字符串是否按字母顺序自然排序。例如,如果输入为“努力”或“Aaaabbyy”,则该方法将返回true,而“hello”将返回false,因为字母“h”出现在字母“e”之后 到目前为止,我已经解决了这个问题 public class orderWording { public static void main(String[] args) { System.out.println(isOrdered("effort"

我正在使用Java创建一个名为isOrdered的方法来判断字符串是否按字母顺序自然排序。例如,如果输入为“努力”或“Aaaabbyy”,则该方法将返回true,而“hello”将返回false,因为字母“h”出现在字母“e”之后

到目前为止,我已经解决了这个问题

public class orderWording {
    public static void main(String[] args) {
       System.out.println(isOrdered("effort")); //should appear true
    }
    public static boolean isOrdered (String s) {
       for (int i = 0; i < s.length(); i ++) {
            if (s.charAt(i) == /*alphabet */ ) {
                return true;
            }
            else {
                return false;
            }
       }
    }
}
公共类命令{
公共静态void main(字符串[]args){
System.out.println(有序(“努力”);//应显示为true
}
公共静态布尔有序(字符串s){
对于(int i=0;i
但是,我不知道如何将每个字符与字母表匹配,以知道字符串是否自然地按字母顺序排列

我考虑在无序的方法中创建一个嵌套循环。当第一个循环遍历字符串时,第二个循环将这些字符与字母表的顺序匹配

类似这样的东西,

    public static boolean isOrdered (String s) {
       String a = 'abcdefghijklmnopqrstuvwxyz'
       for (int i = 0; i < s.length(); i ++) {
           for (int j = 0; j < a.length(); j ++){
               if (s.charAt(i) == a.charAt(j) ) {
                   return true;
               }
               else {
                   return false;
               }
           }
       }
    }
公共静态布尔有序(字符串s){
字符串a='abcdefghijklmnopqrstuvxyz'
对于(int i=0;i
尽管如此,我不确定这是否是解决这个问题的正确方法

谢谢你的帮助。

试试这个

public class orderWording {
    public static void main(String[] args) {
       System.out.println(isOrdered("effort")); //should appear true
    }
    public static boolean isOrdered (String s) {
   boolean issorted=true;
       for (int i = 0; i < s.length()-1; i ++) {
            if (Character.toLowerCase(s.charAt(i)) >Character.toLowerCase(s.charAt(i+1) ) {
                issorted=false;
                break;
            }
       } return issorted;
    }
}

公共类命令{
公共静态void main(字符串[]args){
System.out.println(有序(“努力”);//应显示为true
}
公共静态布尔有序(字符串s){
布尔值issorted=true;
对于(int i=0;iCharacter.toLowerCase(s.charAt(i+1)){
issorted=假;
打破
}
}返回分类;
}
}

我认为这应该可以解决您的问题。我添加了另一种方法来检查它是否也按降序排序

public class OrderWording {
    public static void main(String[] args) {
       System.out.println(isAscendingOrdered("effort")); //true
       System.out.println(isAscendingOrdered("java")); //false
       System.out.println(isDescendingOrdered("Yea")); //true
    }

    public static boolean isAscendingOrdered (String s) {
       s=s.toUpperCase();
       for (int i = 0; i < s.length()-1; i ++) {
          if (s.charAt(i)>s.charAt(i+1))
              return false;                
       }
       return true;
    }

    public static boolean isDescendingOrdered (String s) {
       s=s.toUpperCase();
       for (int i = 0; i < s.length()-1; i ++) {
          if (s.charAt(i)<s.charAt(i+1))
              return false;       
       }
       return true;
    }
}
公共类命令{
公共静态void main(字符串[]args){
System.out.println(isAscendingOrdered(“努力”);//true
System.out.println(isAscendingOrdered(“java”);//false
System.out.println(isDescendingOrdered(“Yea”);//true
}
公共静态布尔值isAscendingOrdered(字符串s){
s=s.toUpperCase();
对于(int i=0;is.charAt(i+1))
返回false;
}
返回true;
}
公共静态布尔值isDescendingOrdered(字符串s){
s=s.toUpperCase();
对于(int i=0;i如果(s.charAt(i),您可以使用Java中的排序方法。创建一个简单的方法对字符串进行排序:

public static String sortString(String str) 
{ 
    // convert string to char array 
    char chrArray[] = str.toCharArray(); 

    // sort string in array
    Arrays.sort(chrArray); 

    // return sorted string 
    return new String(chrArray); 
} 
要检查字符串是否已排序,请执行以下操作:

String str1 = "effort";
str1.equlsIgnoreCase(sortString(str1));  //true

String str2 = "apples";
str2.equlsIgnoreCase(sortString(str2));  //false

这里不需要标志。如果发现冲突(索引i处的字符>索引i+1处的字符),只需返回false即可。此外,终止条件必须是
i
。干得好。我想如果你再解释一些你的决定,比如为什么你把字符串改成大写,或者为什么你只迭代
n-1
letesthanks。当然。1.我把大写改为单词中所有字母都有一个统一的大小写。如果改成小写()用于代替toUpperCase()。2.只迭代到n-1,因为条件检查i+1个字符。迭代到n将导致ArrayIndexOutOfBounds。3.if中的条件取决于它应该是升序还是降序。它检查字符串中字符的ASCII值。希望这有帮助。