如何在不在[]内声明数组索引的情况下将char文字与任何数组索引进行比较

时间:2018-01-18 11:15:41

标签: java

我有这个条件:

   if(Character.isLetter(com[0]) && com [0] != '*' ){
         System.out.println("Valid");
     }

我想要发生的是将这个文字'*'动态地与com [0]进行比较而不将com的内部声明为零。

输入g * g时的输入示例,当我输入* gg时,它仍然显示有效的唯一时间它将无效。无论我把* char放在哪里,而不仅仅是第一个索引,我想显示无效。

我正在创建一个程序来检查变量是有效还是无效,因此除了_(在得分下)之外不允许任何特殊字符

这是完整的代码:

public class identifier {
public static void main (String args[]){
  char[] com = new char[26];

int flag = 0, i = 0;
    System.out.println("Enter an identifier");
      Scanner sc = new Scanner(System.in);
     com = sc.next().toCharArray();



    if(com[i] != 0 && Character.isLetter(com[i]) && com[i] != '*') {
         System.out.println("Valid");         
     }



    else {
         System.out.println("Invalid");
    }      

     while((int)com[i]==0)
     {
          if(!Character.isLetter(com.toString().charAt(i))&& !Character.isDigit(com.toString().charAt(i)) ){
          flag=0;
          break;
          }
          i++;
     }
     if(flag==1){
         System.out.println("Valid");
     }
}

}

3 个答案:

答案 0 :(得分:1)

您正在寻找的是(我假设):

String comm = new String(com);
if (!comm.isEmpty() && Character.isLetter(comm.charAt(0)) && !comm.contains("*")) {

这意味着:如果com的字符串以字母开头且不包含'*'...

答案 1 :(得分:0)

使用您想要的索引定义int。最好使用String。这样您将使用三种方法。

  

isEmpty():当且仅当length()为0时返回true。

     

charAt(int index):返回指定索引处的char值。

     

contains(CharSequence s):当且仅当此字符串包含指定的char值序列时返回true。

int i = 0;
if(!com.isEmpty() && Character.isLetter(com.charAt(i)) && !com.contains('*') ){
     System.out.println("Valid");
}
else{
     System.out.println("Invalid");
}

有关这些方法的详细信息,请查看documentation

<强>更新

由于您已解释过要检查任何索引中是否包含*,因此我更改了解决方案以满足您的要求。

答案 2 :(得分:0)

int i = 0;
if(Character.isLetter(com[i]) && com [i] != '*' ){
     System.out.println("Valid");
 }

只需在变量中声明零,并将com [0]改为com [i]

相关问题