请教一个java小程序!

实验要求
1、输入的常量说明串,要求最后以分号作结束标志;
2、根据输入串或读入的文本文件中第一个单词是否为“const”判断输入串或文本文件是否为常量说明内容;
3、识别输入串或打开的文本文件中的常量名。常量名必须是标识符,定义为字母开头,后跟若干个字母,数字或下划线;
4、根据各常量名紧跟等号“=”后面的内容判断常量的类型。其中:字符型常量定义为放在单引号内的一个字符;字符串常量定义为放在双引号内所有内容;整型常量定义为不以0开头的若干数字的组合;实型常量定义为不以0开头的若干数字加上小数点再后跟若干数字的组合;
5、统计并输出串或文件中包含的各种类型的常量个数;
6、以二维数组(类型,值)的形式输出各常量的类型和值;
7、根据常量说明串中可能出现的错误情况,对不同错误情况做出相应处理。
四、运行结果
1、输入如下正确的常量说明串:
const count=10,sum=81.5,char1=‘f’,max=169,str1=“h*54 2..4S!AAsj”, char2=‘@’,str2=“aa!+h”;
输出:
count(integer,10)
sum(float,81.5)
char1(char, ‘f’)
max(integer,169)
str1(string,“h*54 2..4S!AAsj”)
char2(char, ‘@’)
str2(string,“aa!+h”)

int_num=2; char_num=2; string_num=2; float_num=1.
2、输入类似如下的保留字const错误的常量说明串:
Aconstt count=10,sum=81.5,char1=‘f’;
输出类似下面的错误提示信息:
It is not a constant declaration statement!
Please input a string again!
3、输入类似如下含常量名或常量值错误的常量说明串:
const count=10,12sum=81.5,char1=‘ff’,max=0016;
输出类似下面的错误提示信息:
count(integer,10)
12sum(Wrong! It is not a identifier!)
char1(Wrong! There are more than one char in ‘’.)
max(Wrong! The integer can’t be started with ‘0’.)
int_num=1; char_num=0; string_num=0; float_num=0.
4、其他类型的错误处理情况(略)。

import java.util.Scanner;

public class Test{
public static void main(String[] args){
Scanner in = new Scanner(System.in);
String a = in.nextLine();
String ss ="";
int scount = 0;
int ccount = 0;
int icount = 0;
int fcount = 0;
if(a.substring(0, 5).equals("const")){
String s = a.substring(6,a.length());
String[] sArray = s.split(",");
for(int i = 0;i < sArray.length;i++){
String sa = sArray[i];
String[] saList = sa.split("=");
String name = saList[0];
String con = saList[1];
String type = "";
if(name.startsWith("0")||name.startsWith("1")||name.startsWith("2")||
name.startsWith("3")||name.startsWith("4")||name.startsWith("5")||name.startsWith("6")
||name.startsWith("7")||name.startsWith("8")||name.startsWith("9")){
ss= name + "(Wrong! It is not a identifier!)";
}else{
if(con.startsWith("\"")){
type = "String";
scount++;
ss=type+"("+name+","+con+")";
}else if(con.startsWith("'")){
type = "char";

if(con.length()>3){
ss=name+"(Wrong! There are more than one char in.)";
}else{
ccount++;
ss=type+"("+name+","+con+")";
}

}else{
if(con.length()>1 && con.startsWith("0")){
ss = name+"(Wrong! The integer can’t be started with '0')";
}else{
if(con.equals(con.replace(".",""))){
type = "int";
icount++;
}else{
type = "float";
fcount++;
}
ss = type+"("+name+","+con+")";
}
}
if(con.endsWith(";")){
con = con.replace(";","");
}
}

System.out.println(ss);
}
System.out.println("int_num = "+icount+" char_num = "+ccount+" String_num="+scount+" float_num="+fcount);
}else{
System.out.println("It is not a constant declaration statement! "
+ "Please input a string again!");
}
}
}

运行结果;
const count=10,sum=81.5,char1='f',max=169,str1="h*54 2..4S!AAsj", char2='@',str2="aa!+h";
int(count,10)
float(sum,81.5)
char(char1,'f')
int(max,169)
String(str1,"h*54 2..4S!AAsj")
char( char2,'@')
String(str2,"aa!+h")
————————————————
co c=c
It is not a constant declaration statement! Please input a string again!
————————————————————
const count=10,12sum=81.5,char1='ff',max=0016;
int(count,10)
12sum(Wrong! It is not a identifier!)
char1(Wrong! There are more than one char in.)
max(Wrong! The integer can’t be started with '0')
int_num = 1 char_num = 0 String_num=0 float_num=0
温馨提示:答案为网友推荐,仅供参考
第1个回答  2011-04-12
你想要全部代码?还是自己先尝试后再求助吧。追问

不是全部代码,只是请教怎么识别输入的字符串中的常量名和数据类型。

追答

输入的常量名和数据类型之间是以空格隔开的,你直接就可判断

相似回答