identifier.java
来自「这是《Java2程序设计实用教程(第2版)》每个章节后面的部分习题及实验。」· Java 代码 · 共 89 行
JAVA
89 行
//【习2.26】 识别标识符。
/*
已知标识符的语法图如下:
┌───┐
┌─┤ 字母 │←┐
标识符 ┌───┐ ↓ └───┘ │
───→│ 字母 ├──────────┼──→
└───┘ ↑ ┌───┐ │
└─┤ 数字 │←┘
└───┘
读入一个字符串st,识别出其中所有的标识符 。
包含关键字。
*/
public class Identifier
{
public static boolean isIdentifier(String str) //判断指定字符串是否为标识符
{
boolean yes = true;
if (str!=null && str.length()>0) //有效字符串
{
char ch = str.charAt(0); //第1个字符
if (ch>='A' && ch<='Z' || ch>='a' && ch<='z' || ch=='_' || ch=='$') //字母开头
{
int i=1;
while (yes && i<str.length())
{
ch = str.charAt(i);
yes = ch>='A' && ch<='Z' || ch>='a' && ch<='z' || ch=='_' || ch=='$' || ch>='0' && ch<='9';
i++;
}
}
else yes = false;
}
else yes = false;
return yes;
}
public static void pickupID(String str) //识别出指定字符串str中的所有标识符
{
if (str!=null && str.length()>0)
{
System.out.println("str="+str);
System.out.print("ID: ");
int i=0;
while (i<str.length())
{
char ch = str.charAt(i);
if (ch>='A' && ch<='Z' || ch>='a' && ch<='z' || ch=='_' || ch=='$') //字母开头
{
String id="";
do
{
id = id + ch; //字符串与字符连接,自动将字符转换成字符串
i++;
if (i<str.length())
ch = str.charAt(i);
}while(i<str.length() && (ch>='A' && ch<='Z' || ch>='a' && ch<='z' || ch=='_' || ch=='$' || ch>='0' && ch<='9'));
System.out.print(id+" ");
}
else
i++;
}
System.out.println();
}
}
public static void main(String args[])
{
// String str = "1name";
String str = "_name1";
System.out.println(str+" isIdentifier? "+isIdentifier(str));
str = "10+a1+b+c*(d-2)";
pickupID(str);
}
}
/*
程序运行结果如下:
_name1 isIdentifier? true
1name2age isIdentifier? false
name1+ isIdentifier? false
str=10+a1+b+c*(d-2)
ID: a1 b c d
*/
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?