我试图找出数组中每个字符串中存在的字符数 所以我写这个代码。它不起作用并在行中出错
char c = a.charAt(0);
似乎有一个空字符串传递给方法所以它抛出此异常,但我不知道如何解决这个问题并使代码工作 我该怎么做才能解决这个问题? 这是代码:
public class Gem_Stones {
public static int counter = 0;
public static int result = 0;
public static void main(String [] args){
Scanner c = new Scanner(System.in);
int N = Integer.parseInt(c.nextLine());
String [] Gem = new String[N];
for(int i =0; i<N ; i++){
Gem[i] = c.nextLine();
}
solv(Gem[0] , subArr(Gem));
System.out.println(result);
}
public static String [] subArr(String [] input){
String [] ans = new String[input.length - 1];
for(int i =0 ; i<ans.length ; i++){
ans[i] = input[i+1];
}return ans;
}
public static void solv(String a , String [] str){
char c = a.charAt(0);
for(int i = 0 ; i<str.length ; i++){
if(contain(c , str[i]))
counter++;
}
if(counter == str.length){
result++;
solv(sub(a) , str);
} else {
solv(sub(a) , str);
}
}
public static String sub(String input){
StringBuilder sb = new StringBuilder(input);
sb = sb.deleteCharAt(0);
String result = sb.toString();
return result;
}
public static boolean contain(char c , String s){
for(int i=0 ; i<s.length(); i++){
if(s.charAt(i) == c)
return true;
}return false;
}
}
答案 0 :(得分:0)
检查isEmpty()的字符串是否为charAt(0),如果为true则返回。
答案 1 :(得分:0)
如果您正在尝试查找数组中每个字符串中存在的字符数,那么您正在执行许多不必要的步骤,例如删除字符。
考虑使用嵌套for循环:
public static int solve (String[] strings, char target) {
int count = 0;
for (String s : strings) {
for (int i = 0; i < s.length(); i++) {
if (target == s.charAt(i)) {
count++;
}
}
}
return count;
}
答案 2 :(得分:0)
在进行任何操作之前,你需要检查字符串是否为空(并检查是否为空)
if(a == null || a.equals("") ){
return null; //or throws an exception or -1 or anything you want to do when a is empty
}
char c = a.charAt(0);