对从键盘输入的字符串进行检查,字符串必须为正数或正小数,单个字符不能为零。如果录人正小数,小数点之后必须含有至少一位数字。要求:①在循环语句中接收用户输入,直到用户输入quit为止;2在测试类中,各种情况都要测试到,包括正确的情况和各种错误的情况。
时间: 2024-10-09 13:12:33 浏览: 35
要实现这个功能,你可以使用Java的Scanner类来获取用户的输入,然后使用while循环持续接收用户输入,直到用户输入"quit"为止。我们可以在一个名为`ValidNumberInput`的类中定义一个静态方法,用于验证输入的字符串是否符合要求。以下是一个简单的示例:
```java
import java.util.Scanner;
public class ValidNumberInput {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
String input;
while (!(input = scanner.nextLine()).equals("quit")) {
if (isValidNumber(input)) {
System.out.println("Valid number: " + input);
} else {
System.out.println("Invalid number: " + input);
}
}
scanner.close();
}
/**
* Method to check if the input string is a positive number or positive decimal with at least one digit after the decimal point.
*/
public static boolean isValidNumber(String input) {
// Remove leading/trailing whitespaces
input = input.trim();
// Check if it's just a single zero character or not a number
if (input.isEmpty() || input.charAt(0) == '0' && input.length() > 1) {
return false;
}
try {
// Try parsing as double and ensure there's a non-zero digit after the decimal point
double num = Double.parseDouble(input);
int decimalIndex = input.indexOf('.');
if (decimalIndex != -1 && input.substring(decimalIndex + 1).isEmpty()) {
return false;
}
return num > 0; // Check if it's a positive number
} catch (NumberFormatException e) {
return false; // Input is not a valid number
}
}
}
```
阅读全文