如何使用来自用户输入的字符串编码到程序中并确保它包含小数?

时间:2016-10-09 22:19:35

标签: java

我想在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();   
 }

}

3 个答案:

答案 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