import java.util.Scanner;
/**
* InputFigures类,功能为在标准输入读入一个字符串,把要打印的数字打印出来,使用循环实现。
* 请输入一串数字:
* 1 31 2
* 请问你要打印第几个数字?
* 1
* 第1个数字是1
* 请问你要打印第几个数字?
* 2
* 第2个数字是31
* 请问你要打印第几个数字?
* 100
* 对不起,没有这个数字。
* 请问你要打印第几个数字?
* 0
* 对不起,没有这个数字。
* 请问你要打印第几个数字?
* <----这里用户输入了一个空行
* 谢谢您的使用! <---- 程序退出。
*/
public class InputFigures {
/**
* InputFiguresr类全部功能在主函数中,它从标准输入读入一行字符串,打印出其中所有的数字
*
* @param arguments 命令行参数(没有使用)
*/
public static void main(String[] arguments) {
Scanner scanner = new Scanner(System.in);
System.out.println("请输入一串数字:");
String stringNumbers = scanner.nextLine();
String[] numbers = new String[stringNumbers.length()];
int count = 0;
int begin = 0;
int end = stringNumbers.indexOf(" ");
while (end >= 0) {
if (end == stringNumbers.indexOf(" ")) {
numbers[count++] = stringNumbers.substring(begin, end);
}
stringNumbers = stringNumbers.substring(end + 1);
end = stringNumbers.indexOf(" ");
}
if (end == -1) {
numbers[count++] = stringNumbers.substring(begin);
}
while (true) {
System.out.println("请问你要打印第几个数字?");
String outputNumbers = scanner.nextLine();
if (outputNumbers.length() < 1) {
System.out.println("谢谢您的使用!");
}
if (Integer.parseInt(outputNumbers) > numbers.length
|| Integer.parseInt(outputNumbers) <= 0) {
System.out.println("对不起,没有这个数字!");
} else {
int countNumbers = Integer.parseInt(outputNumbers);
System.out.println("第" + countNumbers + "个数字为:"
+ numbers[countNumbers - 1]);
}
}
}
}
运行结果:
请输入一串数字:
1 2 4
请问你要打印第几个数字?
1
第1个数字为:1
请问你要打印第几个数字?
2
第2个数字为:
请问你要打印第几个数字?
谢谢您的使用!
Exception in thread "main" java.lang.NumberFormatException: For input string: ""
at java.lang.NumberFormatException.forInputString(Unknown Source)
at java.lang.Integer.parseInt(Unknown Source)
at java.lang.Integer.parseInt(Unknown Source)
at com.yang.InputFigures.main(InputFigures.java:69)
问题:如何才能实现注释上的功能?
第2个数字应为2
请问你要打印第几个数字?
谢谢您的使用!(不应该有错误信息)