java - 如何使我允许的输入更加严格

标签 java string loops if-statement

我的作业是编写一个程序来检查输入字符串是否是有效数字。有效数字是任何带或不带 + 或 - 符号和一位小数的数字,例如: (+1 -1 1.0 1.0000000000 -1.0 -1.000000000) 但是,当我输入以下内容时: (1.2.3) 它可以工作。我做错了什么

import java.util.Scanner;

public class parseNum {

  public static void main(String[] args) {
    System.out.println("Please enter a number:");
    Scanner input = new Scanner(System.in);
    String inStr = input.nextLine();
    int i;
    String state = "start";

    for (i=0; i<inStr.length(); i++) {
      if (state.equals("start")) {
        if (inStr.charAt(i) == '+' || inStr.charAt(i) == '-') {
          state = "afterSign";
          continue;
        }
      }
      // i assume this is where i messed up
      if(inStr.charAt(i) == ('.')){
        if(inStr.charAt(i+1) >= '0' && inStr.charAt(i+1) <= '9'){
        state = "accept";
        continue;
        }
        else{
        state = "reject";
        break;
        }
      }

      if (inStr.charAt(i) >= '0' && inStr.charAt(i) <= '9') {
        state = "accept";
        continue;
      }
      else {
        state = "reject";
        break;
      }
    }

    if (state.equals("accept"))
      System.out.println("Thank you");
    else
      System.out.println("Invalid input");

    input.close();
  }

}

最佳答案

在 for 循环上方声明一个 int 来计算点数,

int dotCount = 0;

接下来,每次找到一个点就进行计数

if(inStr.charAt(i) == ('.')){
            dotCount++; //THIS LINE
            if(inStr.charAt(i+1) >= '0' && inStr.charAt(i+1) <= '9'){
                state = "accept";
                continue;
            }
            else{
                state = "reject";
                break;
            }
        }

最后,添加一个 if 语句,如果发现大于 1,则拒绝。

   if(dotCount > 1) {
            state = "reject";
            break;
        }

关于java - 如何使我允许的输入更加严格,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39927706/

相关文章:

java - 如何获取redis中特定hash下的所有key和value?

java - 有没有办法将 java 应用程序添加到我的 github 网站,以便我的个人网站有该应用程序的现场演示?

java - HashMap 方法将其用作最常见的值

java - 在 Java 中使用类文件名字符串调用静态方法

string - Julia - 检查字符串中的每个字符是否都是小写或空格

javascript - 循环是一个不错的选择而不是我创建的吗?

java - Spring 3.1 @Scheduled 随机触发

C# 正则表达式 : How to break up plain text string

c++ - 我们如何在 C++ 中实现 if -goto 循环?

循环内的 JavaScript 闭包——简单实用的示例