📄 accidence.java
字号:
import java.lang.Character;
public class Accidence {
public static void main(String[] args)
{
String string="public class; {} <= != \" \' Accidence;int i; a<=b *&n k& _ff 7jj";
analyse ana=new analyse(string);
ana.checkChars();
ana.sort();
ana.getNewString();
}
}
class analyse
{
public analyse(String string)
{
int length=string.length();
chars =new char[length];
for(int i=0;i<length;i++)
{
chars[i]=string.charAt(i);
}
newString=new String[length];
info=new String[length];
}
public void checkChars()
{
int flag=0;
int k=-1;
for(int i=0;i<chars.length;i++)
{
if(chars[i]!=' ')
{
if(flag==0) {flag=1; k++;}
if(IsSingleTokens(chars[i])&&!IsDoubleTokens(chars[i-1],chars[i]))
{
if(newString[k]!=null) {k++; newString[k]=""+chars[i];}
else{newString[k]=""+chars[i];}
}
else if(IsSingleTokens(chars[i])&&IsDoubleTokens(chars[i-1],chars[i]))
{
newString[k]+=chars[i];
}
else
{
if(i>1){if(IsSingleTokens(chars[i-1])) k++;}
if(newString[k]==null)newString[k]=""+chars[i];
else
{
newString[k]+=chars[i];
}
}
}
else
{
flag=0;
}
}
}
public boolean IsSingleTokens(char c)
{
for(int i=0;i<SINGLETOKENS.length;i++)
{
if(c==SINGLETOKENS[i]) return true;
}
return false;
}
public boolean IsDoubleTokens(char c1,char c2)
{
String doubleTokens=""+c1+c2;
for(String s:DOUBLETOKENS)
{
if(s.compareTo(doubleTokens)==0) return true;
}
return false;
}
public void getNewString()
{
for(int i=0;i<newString.length;i++)
{
if(newString[i]!=null) System.out.print("i:"+i+":"+newString[i]);
if(info[i]!=null) System.out.println(" "+info[i]);
}
}
public String checkKinds(String string)
{
for(String k:KEYWORDS)
{
if(k.compareTo(string)==0) return "关键字";
}
for(char s:SINGLETOKENS)
{
String singleTokens=""+s;
if(singleTokens.compareTo(string)==0)
{
if(string.compareTo(",")==0) return "逗号";
if(string.compareTo(":")==0) return "冒号";
if(string.compareTo(".")==0) return "界符";
if(string.compareTo(";")==0) return "分界符";
if(string.compareTo("'")==0) return "单引号";
if(string.compareTo("\"")==0) return "双引号";
if(string.compareTo("!")==0) return "感叹号";
if(string.compareTo("{")==0) return "花括号";
if(string.compareTo("}")==0) return "花括号";
if(string.compareTo("(")==0) return "括号";
if(string.compareTo(")")==0) return "括号";
if(string.compareTo("[")==0) return "中括号";
if(string.compareTo("]")==0) return "中括号";
if(string.compareTo("=")==0) return "赋值号";
}
}
for(String d:DOUBLETOKENS)
{
if(d.compareTo(string)==0)
{
if(string.compareTo("==")==0) return "恒等于";
if(string.compareTo("<=")==0) return "小于等于";
if(string.compareTo(">=")==0) return "大于等于";
if(string.compareTo("!=")==0) return "不等于";
}
}
if(Character.isLetter(string.charAt(0)) || string.charAt(0)=='_')
{
for(int i=1;i<string.length();i++)
{
if(!Character.isLetter(string.charAt(i)) && !(string.charAt(i)=='_' ))
return "非法标识符";
}
return "标识符";
}
else {return "非法标识符";}
}
public void sort()
{
for(int i=0;i<newString.length;i++)
{
if(newString[i]!=null) info[i]=checkKinds(newString[i]);
}
}
private char[] chars;
private String[] newString;
private String[] info;
public static final char[] SINGLETOKENS={'{','}',';','<','=','!','\"','[',']','(',')','\'','='};
public static final String[] DOUBLETOKENS={"!=","==","<=",">="};
public static final String[] KEYWORDS={"int","import","class","public","abstract","default",
"if","private","this","boolean","do","implements","protected",
"throw","break","double","public","throws","byte","else",
"instanceof","case","extends","short","try","catch","final",
"interface","static","void","char","finally","long","strictfp",
"volatile","float","native","super","while","const","for","new",
"switch","continue","goto","package","synchronized"};
}
//D:/My Documents/文档/My QQ Files/CustomFace/CustomFace/1290A3E6152CCACF7ABFD0E2ECF53FA8.gif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -