我需要帮助编写一种检查数字和文本是否连续的方法。如果输入类似于输入deFgh或456789,则需要返回布尔值true,对于其他不连续的输入,需要返回false。我不明白如何使循环适用于像xyZaBcD和890123或cbazyx
这样的情况答案 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获取的整数。