创建一个布尔方法来检查连续的数字

时间:2013-10-18 20:38:40

标签: java methods boolean

我需要帮助编写一种检查数字和文本是否连续的方法。如果输入类似于输入deFgh或456789,则需要返回布尔值true,对于其他不连续的输入,需要返回false。我不明白如何使循环适用于像xyZaBcD和890123或cbazyx

这样的情况

4 个答案:

答案 0 :(得分:1)

试试这段代码:

public static boolean isConsecutive(final String s) throws IllegalArgumentException
{
    if (null == s) throw new IllegalArgumentException();
    if (s.length() <= 1) return true;

    final String lc = s.toLowerCase();
    char c = lc.charAt(0);
    for (int cc=1; cc<lc.length(); cc++)
        if ( (c+1) != lc.charAt(cc) )
            return false;
        else
            c++;

    return true;
} 

public static void main(String[] args)
{
    try
    {
        System.out.println(isConsecutive("456789"));
        System.out.println(isConsecutive("deFgh"));
        System.out.println(isConsecutive("xyZaBcD"));
        System.out.println(isConsecutive("890123"));
    }
    catch(final Exception e)
    {
        e.printStackTrace();
    }
}

但我真的建议你不要向老师展示它,因为它会有更多问题,只能用作你自己代码的指示

答案 1 :(得分:1)

这可以通过最简单的方式实施:

public class Check {
    private static boolean checkConsecutive(String str) {
            str = str.toLowerCase();
            if (str.length() == 1) return true;

        for (int i = 1; i < str.length(); i++) {
            String first = str.substring(i, i+1);
            String beforeFirst = str.substring(i-1, i);

            if (beforeFirst.compareTo(first) > 0) {
                return false;
            }
        }

        return true;
    }

    public static void main(String[] args) {
        Check obj = new Check();

        System.out.printf("abcdef is: %s%n", obj.checkConsecutive("abcdef"));
        System.out.printf("12345 is: %s%n", obj.checkConsecutive("12345"));
        System.out.printf("54321 is: %s%n", obj.checkConsecutive("54321"));
        System.out.printf("fedcba is: %s%n", obj.checkConsecutive("fedcba"));
    }
} 

下一步输出:

abcdef is: true
12345 is: true
54321 is: false
fedcba is: false

这一行str.substring(i, i+1)只返回一个字母,我们可以使用String类中的compareTo(),它自己比较连续。

答案 2 :(得分:0)

迭代字符串并检查字符代码序列。如果需要,请使用toLowerCase()方法。

答案 3 :(得分:0)

您可以将(int)转换为循环中的字符。如果整数介于48和57之间,则表示该字符是数字。

请参阅ASCII表,了解从char获取的整数。