有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

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

  1. # 1 楼答案

    如果要解析无符号十进制数,只需使用^{}

    double d = scanner.nextDouble();
    if (d>=0) // valid
    

    要仅检查输入是否有效,可以使用正则表达式,如下所示:

    if (Pattern.matches("[+\\-]?\\d+(\\.\\d+)?", z)) // valid
    else // invalid
    
  2. # 2 楼答案

    我很难理解您真正想要的是什么,但我假设您希望用户输入一个介于0.000和9.999之间的双精度。如果是这种情况,那么将max声明为double,而不是int。除此之外,不要max = Integer.parseInt(z);,而是max = Double.parseDouble(z);

    但是,如果要验证输入长度,请与z.length()进行比较

  3. # 3 楼答案

    我认为你的代码可能有几个问题,首先你有一段永远不会得出结论的代码,所以你应该改变:

            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"); 
            }
        }
    

    用于:

        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