【发布时间】:2015-03-20 18:34:18
【问题描述】:
import java.io.*;
import java.util.*;
public class Solution {
public static final int n = 26;
public int check(String arr) {
if (arr.length() < n) {
return -1;
}
for (char c = 'A'; c <= 'Z'; c++) {
if ((arr.indexOf(c) < 0) && (arr.indexOf((char)(c + 32)) < 0)) {
return -1;
}
}
return 1;
}
}
public static void main(String[] args) {
Scanner s1 = new Scanner(System.in);
String s = s1.next();
Solution obj = new Solution();
int d = obj.check(s);
if (d == -1) {
System.out.print("not pangram");
} else {
System.out.print("pangram");
}
}
如果输入的字符串是:
我们及时为下一个奖品评出古董象牙扣
它会给出错误输出:
not pangram。
我无法找出代码有什么问题。
提前致谢!
【问题讨论】:
-
让我们调试你的代码,为什么检查方法返回-1?您在多个地方返回 -1。然后你会得到你的答案。
-
第一个返回是当我的字符串的长度小于 26 个字符时.. 因此,如果长度大于它就不能是一个 pangram 然后它继续检查所有字母是否都存在于字符串与否.. 如果不是,它最终返回 -1 如果通过字符串运行良好,它返回 1
-
@bummi:不是真的。提议的副本要求任何算法; OP 有一个,但它包含错误。
标签: java string java.util.scanner pangram