abh*_*hth 0 java string pangram java.util.scanner
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");
}
}
Run Code Online (Sandbox Code Playgroud)
如果输入的字符串是:
我们立即判断下一个奖项的古董象牙扣
它会给出错误的输出:
不是pangram.
我无法找出代码有什么问题.
提前致谢!
问题是whitespace是一个分隔符Scanner.next().因此,当您输入时We promptly judged antique ivory buckles for the next prize,s将指向字符串We.当你打电话obj.check(s)时We它会返回-1.
要验证是否是这种情况,您可以打印s并检查其值.你也可以这样做:
String s = "We promptly judged antique ivory buckles for the next prize";
Run Code Online (Sandbox Code Playgroud)
打电话obj.check(s),看看它会返回正确的答案.
要修复它,你应该调用Scanner.nextLine()而不是Scanner.next():
String s = s1.nextLine();
Run Code Online (Sandbox Code Playgroud)
May be program by using set will make solution easier ..:)
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.util.HashSet;
import java.util.Set;
public class Pangram {
public static void main(String args[]) {
try {
final String str;
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
str = br.readLine().toLowerCase().replaceAll(" ", "");
char[] chars = str.toCharArray();
final Set set = new HashSet();
for(char c: chars){
set.add(c);
}
System.out.println(set.size());
if(set.size() == 26)
System.out.println("pangram");
else
System.out.println("not pangram");
} catch (Exception e) {
e.printStackTrace();
}
}
Run Code Online (Sandbox Code Playgroud)
}
另一个版本:
import java.io.*;
import java.util.*;
import java.text.*;
import java.math.*;
import java.util.regex.*;
public class Solution {
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
String sentence = scan.nextLine();
sentence = sentence.toUpperCase();
sentence = sentence.replaceAll("[^A-Z]", "");
char[] chars = sentence.toCharArray();
Set<Character> set = new HashSet<Character>();
for( int i = 0; i < chars.length; i++ ) set.add(chars[i]);
System.out.println(set.size() == 26 ? "pangram" : "not pangram");
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
24123 次 |
| 最近记录: |