如何识别出0开头或0x开头的int类型?
现在是这样题目提供了String convert(int arg) 方法,参数arg只能是int类型,在方法内部要能判断出arg是否是非法输入像0或0x开头的输入就要判断出是非法参数过滤掉,只能接受正常的正整123,321,1000000,等,因为arg是要转换为大写的rmb值的,像123需要转换为"壹佰贰拾叁"输出,所以0,或0x开头的需要判断出屏蔽,之前发的贴感觉说的不够清楚没得到解答,在次补充完善,求破。。。。。。。另:0100,0x100是int类型,不会报错,convert方法参数题目给的是int类型,是给定的方法,要写的是方法里的代码,之后题目是由系统判定给分,系统会用一大堆实例去检测这个方法,不可以去修改方法模型 --------------------编程问答--------------------
int a = 0x100;--------------------编程问答-------------------- 考虑下用正则表达式来过滤掉0x或者0是否可以! --------------------编程问答-------------------- 0开头的表示8进制整数,0x开头表示16进制整数,如果入参为int型,是无法判别的。
System.out.println(new Integer(a).intValue() + "<------------");
建议LZ将入参类型改成String,然后用正则表达式"[1-9]\\d*"判断入参合法性即可。 --------------------编程问答--------------------
如果参数要是String类型也就没什么好说的了,就是因为参数是int 给出的值又不好确定进制,要想办法能识别出进制,int类型不好用正则表达式 --------------------编程问答-------------------- 说的好复杂,一个头一个尾 。总有个一个地方。出去进来。你把转换 正则搞。 --------------------编程问答--------------------
convert方法参数题目给的是int类型,是给定的方法,我要写的是方法里的代码,之后题目是由系统判定给分,系统会用一大堆实例去检测这个方法,不可以去修改方法模型,
题目提交上去题目系统会去调用这个方法,题目系统传进来的参数我不好改,系统只会根据实例测试这个方法,最后自动给出分数,如果自己改方法参数类型系统实例提供的int类型参数就穿不进来出错了 --------------------编程问答-------------------- 可不可用在方法中先转成字符串,然后用正则比较是否是16进制和8进制,是的话转成2进制啊 --------------------编程问答--------------------
5L说的有道理,既然方法不能改,就在入口把好关。如果从头到尾都是int型传递的,那就。。真没辙了,毕竟8进制16进制都是合法的整数啊。。 --------------------编程问答--------------------
我回复的说的很清楚,入口不是我控制的,方法内可能的确解决不了,感觉jdk应该提供能识别int类型进制的方法 --------------------编程问答-------------------- jdk7: 0b开头可以表示二进制.
方法签名已经经过编译不可改变,你以0xA和10调用方法,编译后的class不变.
答案就是楼主奇思妙想不断,但我认为你的奇思妙想实现不了,也不应该实现(逻辑不对)
补充:Java , Java SE