刚学了一学期java的大二学生,老师给了个任务,完全没思路
java吧
全部回复
仅看楼主
level 11
Atrops💞
楼主
有没有dalao给个思路什么的
2019年01月15日 00点01分
1
level 11
Atrops💞
楼主
按老师说的应该是做一个分词器,可是完全没接触过这东西啊
2019年01月15日 00点01分
2
Atrops💞
别沉啊
2019年01月15日 01点01分
level 11
♤随◎心♂
字符串截取啊
2019年01月15日 01点01分
4
level 8
地狱牛马
编译原理
2019年01月15日 01点01分
6
level 11
不太冷😁
编译原理的算数处理吗,用栈,加上一些规则,然两两符号之间根据优先级确定进出栈和运算。
2019年01月15日 01点01分
7
level 9
MidGodKiller99
public class Test1 {
public static void main(String[] args){
String str = "-32.1*((11-2)+5)/(-15)*(+7)";
str = change(str);
System.out.println(str);
}
public static String change(String str){
if(str == null || str.isEmpty()) return null;
char[] charArr = str.toCharArray();
int size = charArr.length;
int start = 0;
int end = size -1;
int depth = 0;
final String OPERATOR = " OPERATER";
final String CLOSE = " CLOSE";
final String OPEN = " OPEN";
final String POSITIVE = " POSITIVE";
final String NEGATIVE = " NEGATIVE";
final String NEXTLINE = "\n";
final char NONE = 'N';
char previous = NONE;
char next = NONE;
String currentStatus = POSITIVE;//初始化默认为正数
StringBuffer returnStr = new StringBuffer();
for(int i=0;i<size;i++){
char c=charArr[i];
next = i==size-1 ? NONE : charArr[i+1];
previous = i==0 ? NONE : charArr[i-1];
returnStr.append(c);
if(c=='('){
depth++;
returnStr.append(OPEN).append(NEXTLINE);
}else if(c==')'){
depth--;
returnStr.append(CLOSE).append(NEXTLINE);
}else if(c=='*' || c=='/'){
currentStatus = POSITIVE;
returnStr.append(OPERATOR).append(NEXTLINE);
}else if(c=='-'){
//判断是否为负数
if(((previous!=NONE
&& previous=='(')
|| previous==NONE)
&& isNum(next)){
currentStatus = NEGATIVE;
}else{
returnStr.append(OPERATOR).append(NEXTLINE);
}
}else if(c=='+'){
//判断是否为正数
if(((previous!=NONE
&& previous=='(')
|| previous==NONE)
&& isNum(next)){
currentStatus = POSITIVE;
}else{
returnStr.append(OPERATOR).append(NEXTLINE);
}
}else if(isNum(c)
&& !isNum(next)){
returnStr.append(currentStatus).append(NEXTLINE);
}
}
return returnStr.toString();
}
public static boolean isNum(char c){
return (c>='0'&&c<='9')||c=='.';
}
2019年01月16日 11点01分
8
MidGodKiller99
肯定有更好的方法,我再研究研究
2019年01月16日 12点01分
MidGodKiller99
虽然能work,但是感觉有点长
2019年01月16日 12点01分
1