笔试题目,不难,就是烦

weicairong 2004-11-27 08:35:22
题目:输入一字符串,判断是否能够转化为数值。如果能,就返回1;不能,就返回0
...全文
390 21 打赏 收藏 转发到动态 举报
写回复
用AI写文章
21 条回复
切换为时间正序
请发表友善的回复…
发表回复
volkia 2004-12-04
  • 打赏
  • 举报
回复
所以,如果不考虑数值的实际长度(Java中好像double可以支持到10^39),那当然就会很复杂

而实际应用中,哪里需要这么大的数值,如果真要,就自己写算法了(就像100位的两个数相乘)

所以,我个人的观点是:就用二楼的异常处理来说是最方便和合理的.
volkia 2004-12-04
  • 打赏
  • 举报
回复
这一个呢:

35345.5776-.45466.-4646
volkia 2004-12-04
  • 打赏
  • 举报
回复
你们说这个能转化为数值吗?:

-23455.345566-1233.44555
classjava 2004-12-03
  • 打赏
  • 举报
回复
呵呵,笔试题,应该用最直接的方法解决
异常
如果是面试中^_^,大不可用一大套理论或者思想来实现^_^,尽求表现你考虑周到,涉猎面广
但是也不要忘了说异常也可以处理
bighappy 2004-12-03
  • 打赏
  • 举报
回复
我觉得用异常判断是一种非常不可取的做法,我觉得如果你这样做了的话,可能在面试中你已经丢分了!
pxboy 2004-12-03
  • 打赏
  • 举报
回复
还需要判断负号
weicairong 2004-12-03
  • 打赏
  • 举报
回复
zxhong(红透半边天|csdn blog) :我也这样认为的
java1980 2004-11-29
  • 打赏
  • 举报
回复
不要把问题想的太复杂,如果只要实现那个功能,完全没必要大动手脚,就是开始几个人那样写几句就行了。我们在项目中总是那样做,不过不是去返回,而是报错给用户。但目的是一样的。“异常只应该用于处理不正常的情况,不应该用于正常的控制流当中”这个教条对大项目适用,对一个面试题就没必要了。
Chinatosun 2004-11-29
  • 打赏
  • 举报
回复
1、用异常判断。
2、对字符串中的每个字符进行判断,别忘了考虑“小数点.”!
zxhong 2004-11-29
  • 打赏
  • 举报
回复
对字符串中的每个字符进行判断,如果都在0-9之间或是不在第一位和最后一位的".",返回1。如果有一个不符合条件就跳出,返回0。

不紧能判断是否能转成数值,而且还知道是整形还是浮点型
freshmanya 2004-11-29
  • 打赏
  • 举报
回复
to java1980(我爱JAVA)
如果非要说 对什么适用 对什么不适用
我倒认为 大项目大可不必去深究() 这段小小的代码隐藏在里面
又能很正确虽然不是很好的完成任务 没有人会看到的
并且大家也不是很关心性能
但是 面试题就不一样了
面试是 看你的基本功
是看你的 thinking
问题是解决了 好不好呢?
从一道题目里 往往可以看出一个人的思想
如果你不知道 那个"教条"
而采用 异常 倒可以 原谅
如果你知道 教条 却还 背离教条
就是一个态度问题了

呵呵 扯的 有点远了
jy00057800 2004-11-28
  • 打赏
  • 举报
回复
这 NumberFormaterExecption 个类就是数字的判断 如果是数字就不是异常 不是就是异常?
ninghao37 2004-11-28
  • 打赏
  • 举报
回复
public static int CheckInput(String param){
try{
Double.parseDouble(param);
return 1;
}catch(NumberFormaterExecption e){
return 0;
}
}
NumberFormaterExecption:转型异常
freshmanya 2004-11-28
  • 打赏
  • 举报
回复
我觉得楼上各位的办法值得商榷
我以前在项目中遇到过这个问题
使用异常来解决问题正是这道题的陷阱所在

在看过effective java后又重新思考了这个问题
记录在我的blog上了 http://www.52blog.net/more.asp?name=freshman&id=19837
以下是当时的反思
2004-8-11 11:27
private static void isNaN3()
{
for (int i = 0; i < strArr.length; i++)
try
{
//好差的用法
Integer num = Integer.valueOf(strArr[i]);
;//System.out.println(strArr[i] + " is a num");
} catch (NumberFormatException ex)
{
;//System.out.println(strArr[i] + " is not a num");
}

}
上面的方法是我前段时间写的,好像挺简洁,也能完成任务,
但是违背了“异常只应该用于处理不正常的情况,不应该用于正常的控制流当中”,
下面是修改后的版本,其实也没费多少事
通过测试可以发现,利用异常控制程序流程时间开销很大,
Time(isNaN):Time(isNaN2):Time(isNaN3)=0:16:78
谁说“不要做优化”,优化带来了好的变化


private boolean isNaN(String str)
{
int j = 0;
while (j < str.length() &&
Character.isDigit(str.charAt(j)))
j++;
if (j == str.length())
return false; //System.out.println(strArr[i] + " is a num");
else
return true; //System.out.println(strArr[i] + " is not a num");
}

private static void isNaN2()
{
boolean isNaN = false;

for (int i = 0; i < strArr.length; i++)
{
char[] arr = strArr[i].toCharArray();
for (int j = 0; j < arr.length; j++)
{
if (!Character.isDigit(arr[j]))
{
isNaN = true;
break;
}
}
if (isNaN == true)
;//System.out.println(strArr[i] + " is not a num");
else
;//System.out.println(strArr[i] + " is a num");
isNaN = false;
}
}


lhcli 2004-11-28
  • 打赏
  • 举报
回复
同意cc
yuyue28 2004-11-27
  • 打赏
  • 举报
回复
public int CheckInput(String s){
try{
BigInteger big = new BigInteger(s,10);
return 1;
}
carch(Exception e){
return 0;
}
}
vgvg 2004-11-27
  • 打赏
  • 举报
回复
public int CheckInput(String s){
try{
Double.parseDouble(s);
return 1;
}
carch(Exception e){
return 0;
}
}
panchongbin 2004-11-27
  • 打赏
  • 举报
回复
public static int CheckInput(String param){
try{
Double.parseDouble(param);
return 1;
}catch(Execption e){
return 0;
}
}
panchongbin 2004-11-27
  • 打赏
  • 举报
回复
public static int CheckInput(String param){
try{



}
weicairong 2004-11-27
  • 打赏
  • 举报
回复
不可能啊!!
肯定要用到算法的!!
说不定还要考虑科学记数法
加载更多回复(1)

23,405

社区成员

发帖
与我相关
我的任务
社区描述
Java 非技术区
社区管理员
  • 非技术区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧