
indexOf("")
到这个点然后由这个点到此字符串的length()
当然连""都找不到就不用再截取直接这字符串就不是double啦public class WareTest{
public static void main(String[] args) {
lxtest("2");
}
public static void lxtest(Object a){
if(a instanceof Integer){
Systemoutprintln("是数字:"+a);
}else{
Systemoutprintln("不是数字");
}
}
}
这样就行了,如果满意请及时采纳,谢谢~
你可以用一个字符串来保存你的输入,然后你可以将输入利用String类库中的函数进行转换,或者利用contains()函数看,是否还有小数点。
Systemoutprintln("please input the ten strings:");
Scanner sc = new Scanner(Systemin);
String number = scnextLine();
if(numbercontains("")){
//说明是一个小数
double d = DoublevalueOf(s);
}
else{
//
int i = IntegervalueOf(s);
}
Java是一门面向对象编程语言,不仅吸收了C++语言的各种优点,还摒弃了C++里难以理解的多继承、指针等概念,因此Java语言具有功能强大和简单易用两个特征。Java语言作为静态面向对象编程语言的代表,极好地实现了面向对象理论,允许程序员以优雅的思维方式进行复杂的编程。
Java具有简单性、面向对象、分布式、健壮性、安全性、平台独立与可移植性、多线程、动态性等特点。Java可以编写桌面应用程序、Web应用程序、分布式系统和嵌入式系统应用程序等。
1使用CharacterisDigit(char)判断
String str = "123abc";
if (!""equals(str)) {
char num[] = strtoCharArray();//把字符串转换为字符数组
StringBuffer title = new StringBuffer();//使用StringBuffer类,把非数字放到title中
StringBuffer hire = new StringBuffer();//把数字放到hire中
for (int i = 0; i < numlength; i++) {
// 判断输入的数字是否为数字还是字符
if (CharacterisDigit(num[i])) {把字符串转换为字符,再调用CharacterisDigit(char)方法判断是否是数字,是返回True,否则False
hireappend(num[i]);// 如果输入的是数字,把它赋给hire
} else {
titleappend(num[i]);// 如果输入的是字符,把它赋给title
}
}
}
2使用类型转换判断
try {
String str="123abc";
int num=IntegervalueOf(str);//把字符串强制转换为数字
return true;//如果是数字,返回True
} catch (Exception e) {
return false;//如果抛出异常,返回False
}
3使用正则表达式判断
String str = "";
boolean isNum = strmatches("[0-9]+");
//+表示1个或多个(如"3"或"225"),表示0个或多个([0-9])(如""或"1"或"22"),表示0个或1个([0-9])(如""或"7")
ps:这个方法只能用于判断是否是正整数
如果是Java的String对象的话,则一定是Unicode的,这个没有为什么,Java就是这么定的。我猜你的问题应该是如何判断一段字节流是什么编码类型,对吗?比如一个文件,或是网络上面取下来的一段Byte数组,你需要用一个合适的编码来解析成字符串。
这个让你失望了,没有一个文档化的,确定的方法来判断,只能用测试的方法,这个方法也只是猜测,不能百分百的确定,方法如下:
用常见的编码方式对字节流进行解码,比如Unicode,UTF8,
UTF8
without
BOM,
UTF16,
ANSI等等。
对解析的结果进行判断,是不是一个合理的可打印字符,可打印字符最多的解码方式就是最可能的编码了。
如何判断可打印字符?流程如下:把解析好的字符串按照字符进行遍历,把每一个字符转化成Unicode编码,看看这些编码是不是Unicode的支持范围极客。
如果发现有种编码方式都是可打印字符,那么再使用本步骤:对字符串进行分词,分词这个在此不作赘述,你自己再研究一下。分词效果好的就是最可能的编码了。(不过通常到第三步就能搞定了,第四部绝大部分用不着)1使用CharacterisDigit(char)判断
char num[] = strtoCharArray();//把字符串转换为字符数组
StringBuffer title = new StringBuffer();//使用StringBuffer类,把非数字放到title中
StringBuffer hire = new StringBuffer();//把数字放到hire中
for (int i = 0; i < numlength; i++) {
// 判断输入的数字是否为数字还是字符
if (CharacterisDigit(num[i])) {把字符串转换为字符,再调用CharacterisDigit(char)方法判断是否是数字,是返回True,否则False
hireappend(num[i]);// 如果输入的是数字,把它赋给hire} else {titleappend(num[i]);// 如果输入的是字符,把它赋给title}}}
2使用类型转换判断try {String str="123abc";
int num=IntegervalueOf(str);//把字符串强制转换为数字
return true;//如果是数字,返回True
} catch (Exception e) {
return false;//如果抛出异常,返回False}
3使用正则表达式判断
String str = "";
boolean isNum = strmatches("[0-9]+");
//+表示1个或多个(如"3"或"225"),表示0个或多个([0-9])(如""或"1"或"22"),表示0个或1个([0-9])(如""或"7")
ps:这个方法只能用于判断是否是正整数int 和 long不同在于精度,小于int最大值时候可以不写L,当大于时必须写L,这就是满足编译器,换你的话说是java中的判断。你的疑问在于你把字符和数值弄混了,字符有它的ascii码表示法,7也可以是‘7’这俩是不同的东西,你把7理解成了‘7’是不对的,7就用二进制表示,int的时候long的时候因为没用到那么多位是一样的,但是一旦超过了int的表示范围,你不加L编译器就会不高兴,这就是规定,死记就行,越想越偏
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)