题目
[先说点出题背景]
这个题是为低年级同学、学C语言的同学准备的,因为,对这部分同学,这个题目编写起来略有一点复杂。如果是高年级、学过了正则表达式(Regular Expression)的同学或者学过了Java等OO语言的同学做这个题,应当发现这题比较简单吧。哦,对了,什么是tokenizer?请自行查询解决。反正在此处不应翻译成“令牌解析器”。
[正题]
四则运算表达式由运算数(必定包含数字,可能包含正或负符号、小数点)、运算符(包括+、-、*、/)以及小括号((和))组成,每个运算数、运算符和括号都是一个token(标记)。现在,对于给定的一个四则运算表达式,请把她的每个token切分出来。题目保证给定的表达式是正确的,不需要做有效性检查。
输入样例:
32*((2-2)+5)/(-15)
输出样例:
32
*
(
(
2
-
2
)
+
5
)
/
(
-15
)
代码
import java.util.Scanner;
public class Main{
public static void main(String args[]) {
Scanner in = new Scanner(System.in);
String n=in.nextLine();
char [] m=n.toCharArray();
for(int i=0;i<m.length;i++){
if (m[i]>='0'&&m[i]<='9'||m[i]=='.'){
if (i+1<m.length&&((m[i+1]>='0'&&m[i+1]<='9')||m[i+1]=='.')) System.out.print(m[i]);
else System.out.println(m[i]);
}
else if ((m[i]=='+'||m[i]=='-')&&i==0){System.out.print(m[i]);}
else if (m[i]=='-'&&(m[i-1]=='(')) System.out.print(m[i]);
else System.out.println(m[i]);
}
}
}
笔记
- 简单语法题。注意坑:+/-4开头,要判定相连。其他()内相连即可。还有小数点。