我有这个条件:
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");
}
}
}
答案 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]