首页 > 解决方案 > 无法从java中的布尔方法获得返回

问题描述

试图检查单词的字母是否按字母顺序排序。但我没有从该方法中得到任何回报。

import java.util.Scanner;

public class A284 {
    //Write a Java program to check
    // if each letter of a given word (Abecadrian word) is less than the one before it.

    public static boolean abecidarianWord(String word){
        int index=word.length()-1;
        for(int i=0;i<index;i++){
            if (word.charAt(i)<=word.charAt(i+1)){
                return true;
            }else return false;
        }
        return true;
    }
    public static void main(String[] args) {
        String entry;
        System.out.println("input a word: ");
        Scanner s1=new Scanner(System.in);
        entry=s1.next();
        abecidarianWord(entry);

    }
}

标签: javamethodsboolean

解决方案


你这里有两个问题。

首先,您没有使用从返回的值abecidarianWord,您只是调用它并忽略结果,因此您无法知道该方法将返回什么。因此,您应该将返回值分配给一个变量并对其进行处理。例如,在您main的天真实现结束时会执行以下操作:

boolean isOrdered = abecidarianWord(entry);
if (isOrdered) {
    System.out.println("String is ordered");
} else {
    System.out.println("String is not ordered");
}

其次,在abecidarianWord您在循环的第一次迭代后立即返回,这只会告诉您您的条件是否对前两个字符成立。

相反,您可能希望在false发现一对遵守条件的情况下立即返回,并true在没有“意外”的情况下到达循环末尾时返回,例如:

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

推荐阅读