我想在Java中创建我的程序,根据用户输入决定输入是否为有效字符。有效字符包括:数字和小数。我必须验证并确保这些字符无效:+ - 。(必须只出现一次) 代码到目前为止:
import java.util.Scanner;
public class Program4 {
public static void main(String[] args) {
//Makes Variables
String z;
int max;
// Scanner
Scanner Input = new Scanner(System.in);
// Asks user to input the number
System.out.println("Please enter a valid (4 character) double literal :");
//Accepts users input
z= Input.nextLine();
max = Integer.parseInt(z);
//Based on User input outputs
if (max >= 0.0 & max <= 9.0)
{
System.out.print(max+" is a valid (4 character) double literal");
if (max>9.0){
System.out.print(max+" is a valid (4 character) double literal");
if(max<9.0)
{
System.out.print(max+" is a valid (4 character) double literal");
}
}
}
//closes scanner
Input.close();
}
}
答案 0 :(得分:0)
如果要解析无符号十进制数,只需使用Scanner
:
double d = scanner.nextDouble();
if (d>=0) // valid
要仅检查输入是否有效,您可以使用正则表达式,如下所示:
if (Pattern.matches("[+\\-]?\\d+(\\.\\d+)?", z)) // valid
else // invalid
答案 1 :(得分:0)
我很难理解你真正想要的东西,但我想你希望用户输入一个介于0.000和9.999之间的双倍。如果是这种情况,请将max
声明为double
而不是int
。除此之外,请max = Integer.parseInt(z);
代替max = Double.parseDouble(z);
。
但是,如果您要验证输入长度,请与z.length()
进行比较。
答案 2 :(得分:0)
我认为你的代码可能有几个问题,首先你有一段代码永远不会得出结论所以你应该改变:
if (max>9.0) {
System.out.print(max+" is a valid (4 character) double literal");
if(max<9.0)
{
System.out.print(max+" is a valid (4 character) double literal");
}
}
for:
if (max>9.0) {
System.out.print(max+" is a valid (4 character) double literal");
}else if(max<9.0)
{
System.out.print(max+" is a valid (4 character) double literal");
}
并且您还应该将输入声明为double而不是int