用java编写从标准输入读入一行字符串,打印出其中所有的数字

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
请问你要打印第几个数字?

谢谢您的使用!(不应该有错误信息)

package test1;

import java.util.Scanner;

/**
* InputFigures类,功能为在标准输入读入一个字符串,把其中连续的数字打印出来,使用循环实现。 请输入一串数字: 2331 23 1 23123
* 12 请问你要打印第几个数字? 5 第5个数字是12 3 第3个数字是1 100 对不起,没有这个数字。 0 对不起,没有这个数字。 <----
* 这里用户输入了一个空行 谢谢您的使用! <---- 程序退出。
*/
public class InputFigures {
/**
* InputFiguresr类全部功能在主函数中,它从标准输入读入一行字符串,打印出其中所有的数字
*
* @param arguments
* 命令行参数(没有使用)
*/
public static void main(String[] arguments) {
Scanner inputNumbers = null;
Scanner printNumbers = null;
boolean sw = true;

System.out.println("请输入一串数字!");
inputNumbers = new Scanner(System.in);
String stringNumbers = inputNumbers.nextLine();
System.out.println("你输入的数字为:" + stringNumbers);
char[] numbers = stringNumbers.toCharArray();

while (sw) {
printNumbers = new Scanner(System.in);
System.out.println("请问你要打印第几个数字?输入空格结束程序 ");
String sw2 = printNumbers.nextLine();
if (String.valueOf(sw2.charAt(0)).equals(" ")) {
sw = false;
System.out.println("谢谢您的使用!程序退出。");
} else if (Integer.parseInt(sw2) > numbers.length
|| Integer.parseInt(sw2) <= 0) {
System.out.println("对不起,没有这个数字!");
} else {
int len = Integer.parseInt(sw2);
System.out.println("第" + len + "数字为:" + numbers[len - 1]);
}
}

}
}
温馨提示:内容为网友见解,仅供参考
无其他回答
相似回答