Java 如何检查字符串是否为浮点数?

Java 如何检查字符串是否为浮点数?,java,string,floating-point,Java,String,Floating Point,在我的程序中,我将把用户输入存储在一个数组中,然后检查每个字符是否是数字、点、E或负号,然后我将它存储在一个名为temps的数组中 现在我在跳蚤方法()中遇到了一个问题,即我不知道如何为浮点数模式(例如12.22)设置条件 我在这里工作: public void sorting(String data) { String[] temps = new String[200]; int cpos = 0; int tpos = 0; Arrays.fill(temp

在我的程序中,我将把用户输入存储在一个数组中,然后检查每个字符是否是数字、点、E或负号,然后我将它存储在一个名为
temps
的数组中

现在我在跳蚤方法()中遇到了一个问题,即我不知道如何为浮点数模式(例如12.22)设置条件

我在这里工作:

public void sorting(String data) {
    String[] temps = new String[200];
    int cpos = 0;
    int tpos = 0;

    Arrays.fill(temps, null);

    if (str.isEmpty() == false) {
        char char1 = str.charAt(cpos);

        int i = 0;
        while (i < str.length()) {
            char1 = str.charAt(cpos);

            char1 = str.charAt(tpos);
            System.out.println("the current value is  " + char1 + " ");
            tpos++;

            if (Character.isDigit(char1)) {
                temps[cpos] = "Digit";
                // System.out.println(" this number is digit");
                cpos++;
            } else if (char1 == 'e' || char1 == 'E') {
                temps[cpos] = "s_notaion";
                cpos++;
            } else if (char1 == '-') {
                temps[cpos] = "negative";
                cpos++;
            } else if (char1 == '.') {
                temps[cpos] = ".";
                cpos++;
            }
            i++;
        }
    }
}
public void排序(字符串数据){
字符串[]temps=新字符串[200];
int cpos=0;
int-tpos=0;
数组。填充(临时,空);
if(str.isEmpty()==false){
char char1=str.charAt(cpos);
int i=0;
而(i
下面是浮点数的方法

private static boolean floating(String [] data) {
    int count =0;
    boolean correct = false;
    for (int i = 0; i < data.length; i++) {

         if (data[i]== "Digit" )
             && data[i]=="." && data[i]"Digit"){
             // here is the problem for the condition 
         }

    }
    return false; 
}
私有静态布尔浮点(字符串[]数据){
整数计数=0;
布尔正确=错误;
对于(int i=0;i
测试字符串是否可以表示浮点的最简单方法是尝试对其进行解析:

String testString = "1.2345";
double result;
try {
  result = Double.parseDouble(testString);
  System.out.println("Success!")
  }
catch (NumberFormatException nfe) {
  // wasn't a double, deal with the failure in whatever way you like
}

测试字符串是否可以表示浮点的最简单方法是尝试对其进行解析:

String testString = "1.2345";
double result;
try {
  result = Double.parseDouble(testString);
  System.out.println("Success!")
  }
catch (NumberFormatException nfe) {
  // wasn't a double, deal with the failure in whatever way you like
}

如果我理解正确的话,数据数组中有[“Digit”,“Digit”,“Digit”]

所以你想要

私有静态布尔浮点(字符串[]数据){
方法返回true,如果数组只有“Digit”条目,并且只有一个“.”条目?是吗

如果是:

boolean foundLeDigit = false;
for (int i = 0; i < data.length; i++) {

     if (data[i].equals("Digit") == false && data[i].equals(".") == false  {
        //we found something other than a Digit or . it's not a float
       return false;
     }
    if(data[i].equals(".")) { 
     if(foundLeDigit) { return false; //as we found 2 "." }
    foundLeDigit = true
    }


}
return foundLeDigit; 
boolean foundLeDigit=false;
对于(int i=0;i
如果我理解正确,数据数组中有[“Digit”,“Digit”,“Digit”]之类的内容

所以你想要

私有静态布尔浮点(字符串[]数据){
方法返回true,如果数组只有“Digit”条目,并且只有一个“.”条目?是吗

如果是:

boolean foundLeDigit = false;
for (int i = 0; i < data.length; i++) {

     if (data[i].equals("Digit") == false && data[i].equals(".") == false  {
        //we found something other than a Digit or . it's not a float
       return false;
     }
    if(data[i].equals(".")) { 
     if(foundLeDigit) { return false; //as we found 2 "." }
    foundLeDigit = true
    }


}
return foundLeDigit; 
boolean foundLeDigit=false;
对于(int i=0;i
这些问题缺乏一点背景知识,因此对于我的回答,我假设这是一个需要手动解决的家庭作业,所有浮点数都应该被接受

你的方法(虽然过度设计)有一半是正确的:你将输入字符串减少为字符类-数字、符号、指数标记。缺少的是,现在你必须确保这些字符类的顺序正确

识别浮点数的各个部分(只需查看0、-1.0、400E30、42.1E-30),您将看到它们以特定的顺序出现,即使其中一些是可选的,并且每个部分对允许的字符都有限制。例如,如果数字中有“E”,则后面必须有一个数字(带有可选符号)

因此,当您逐步查看字符串的字符时,请考虑如何跟踪您在数字中的位置,并基于此进行字符验证(这是JonKiparsky提到的状态机)

几件小事:

  • 不要将字符串与“==”进行比较-使用equalsTo()
  • 想想如果sorting()找到一个既不是数字、符号也不是指数“E”的字符意味着什么
  • 可以为200个条目分配temps数组,但输入字符串可能更大

这些问题缺乏一点背景知识,因此对于我的回答,我假设这是一个需要手动解决的家庭作业,所有浮点数都应该被接受

你的方法(虽然过度设计)有一半是正确的:你将输入字符串减少为字符类-数字、符号、指数标记。缺少的是,现在你必须确保这些字符类的顺序正确

识别浮点数的各个部分(只需查看0、-1.0、400E30、42.1E-30),您将看到它们以特定的顺序出现,即使其中一些是可选的,并且每个部分对允许的字符都有限制。例如,如果数字中有“E”,则后面必须有一个数字(带有可选符号)

因此,当您逐步查看字符串的字符时,请考虑如何跟踪您在数字中的位置,并基于此进行字符验证(这是JonKiparsky提到的状态机)

几件小事:

  • 不要将字符串与“==”进行比较-使用equalsTo()
  • 想想如果sorting()找到一个既不是数字、符号也不是符号的字符意味着什么