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
只不过两个以上的空格只能检测到第一个