import java
.util
.Scanner
;
class WithSpaceNuberError extends Exception
{
String message
;
WithSpaceNuberError() { message
= "异常:字符串中带有空格" ;}
public String
ShowMessage() { return message
; }
}
class WithNotNuberError extends Exception
{
String message
;
WithNotNuberError() { message
= "异常:字符串中带有非数字字符" ;}
public String
ShowMessage() { return message
; }
}
class Number
{
public void Change(String number
) throws WithSpaceNuberError
, WithNotNuberError
{
for(int i
= 0; i
< number
.length(); i
++)
{
char c
= number
.charAt(i
);
if( (c
< '0' || c
> '9') && c
!= ' ' )
throw new WithNotNuberError();
if(c
== ' ')
throw new WithSpaceNuberError();
}
int num
= Integer
.valueOf(number
);
System
.out
.println("转换后的数字为:" + num
);
}
}
public class Number_test
{
public static void main(String args
[])
{
Scanner read
= new Scanner(System
.in
);
String str1
= read
.nextLine();
String str2
= read
.nextLine();
String str3
= read
.nextLine();
Number num1
= new Number();
Number num2
= new Number();
Number num3
= new Number();
try
{
num1
.Change(str1
);
num2
.Change(str2
);
num3
.Change(str3
);
}
catch (WithNotNuberError e
)
{
System
.err
.println(e
.ShowMessage());
}
catch(WithSpaceNuberError e
)
{
System
.err
.println(e
.ShowMessage());
}
}
}
提取字符串每一个字符
char c
= number
.charAt(i
);
java中提取字符串每个字符只能利用这个函数number.charAt来提取,number是string类型,i是下标,返回这个下标的索引值
判断是否有空格 例子中我们是用循环判断每个下标的索引值是否为空格 还有一种方法直接判断空格的下标 如果空格的下标不是 -1 ,那说明空格的下标都在 0 ~ length - 1 之间 否则没有空格
String str
= "acddd";
if(str
.Indexof(" ") != -1)
{
System
.out
.println("存在非法字符!");
}
else
{
System
.out
.println("字符串合法");
System
.out
.println("空格的下标是 " + str
.indexOf(" "));
}
至于为什么是-1,如果不存在空格,那么空格的下标就是 -1
只不过两个以上的空格只能检测到第一个