编程练习
题目:请实现一个函数用来判断字符串是否表示数值(包括整数和小数)。例如,字符串”+100”,”5e2”,”-123”,”3.1416”和”-1E-16”都表示数值。 但是”12e”,”1a3.14”,”1.2.3”,”+-5”和”12e+4.3”都不是。
思路:这道题目不难,难在对细节的考量和推敲,多提交几次就知道自己哪些地方没考量周全了。
主要思想是分治,将一个大的复杂的问题分成小的来配合解决,首先写一个判断输入的数是不是纯数字的函数(包含正负号,比如-1.23),这个应该很容易想到写法,主要是判断给定字符的AscII码值在不在48~57之间即可(表示字符0到9),然后还有正负号的判断以及小数点的判断(经过测试,不管小数点在头或者尾均可通过,所以和小数点的位置没有关系,只和它的个数有关必须等于1或者0)。然后再写一个输入的字符里包含e或者E的时的判断函数,如果有,再判断e的位置,e不能在首也不能在尾,且e的左右两边均是纯数,并且右边的是纯整数(不含小数点)。
java代码如下:
1 | import java.util.ArrayList; |