描述
给定一个不包含空白符的字符串,请判断是否是C语言合法的标识符号(注:题目保证这些字符串一定不是C语言的保留字)。
C语言标识符要求:
-
非保留字;
-
只包含字母、数字及下划线(“_”)。
-
不以数字开头。
输入
一行,包含一个字符串,字符串中不包含任何空白字符,且长度不大于20。
输出
一行,如果它是C语言的合法标识符,则输出yes,否则输出no。
样例输入
RKPEGX9R;TWyYcp
样例输出
no
解法:
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner in=new Scanner(System.in);
char a='a';
char A='A';
int sum=0;
String c=in.nextLine();
char d[]=c.toCharArray();
for(int i=0;i<d.length;i++) {
//当d[i]=0时只能包含字母,下划线
if(i==0) {
for(int j=0;j<26;j++) {
if(d[i]==a+j||d[i]==A+j) {
//下划线和数字不可写在这边,否则将会循环26次
sum++;
}
}
if(d[i]=='_') {
sum++;
}
}
//当d[i]>0时只包含数字,字母,下划线
else{
for(int j=0;j<26;j++) {
if(d[i]==a+j||d[i]==A+j) {
sum++;
}
}
if(d[i]>='0'&&d[i]<='9') {
sum++;
}
else if(d[i]=='_') {
sum++;
}
}
}
if(sum!=d.length) {
System.out.println("no");
}
else if(sum==d.length){
System.out.println("yes");
}
}
}