Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/string/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何检查字符串是否包含数值_Java_String - Fatal编程技术网

Java 如何检查字符串是否包含数值

Java 如何检查字符串是否包含数值,java,string,Java,String,我想知道如何检查我的子字符串,如果它是一个数值,或者它只是一个单词 例如,如果我的子字符串d=150.63 我做了一些研究,发现Character.is Digit(),但它不起作用。下面是我到目前为止所做的代码 import java.util.*; import java.io.*; public class Prac34 { private Scanner x; public void openFile(){ try{ x=new Scan

我想知道如何检查我的子字符串,如果它是一个数值,或者它只是一个单词

例如,如果我的子字符串d=150.63

我做了一些研究,发现Character.is Digit(),但它不起作用。下面是我到目前为止所做的代码

import java.util.*;
import java.io.*;

public class Prac34 {

    private Scanner x;

    public void openFile(){
      try{
        x=new Scanner(new File("sales.txt"));
      }
      catch (Exception e){
        System.out.println("could not find file");    
      }
    }

    public void readFile(){
      //int count=0;
      double total=0;
      while(x.hasNext()){

        String a=x.nextLine();
        int v=a.length();

        int b=a.indexOf(':');
        String c= a.substring(0,(b+1));

        String d=a.substring((b+1),v);
        double e= Double.parseDouble(d);

        if (Character.isDigit(d)) {
          total=total+e;
        }


        System.out.println(c);
        System.out.println(d);
}
}

    public void closeFile(){
      x.close();
    }
}

您可以尝试解析字符串:

try {
    double e = Double.parseDouble(d);
    total += e;
} catch (NumberFormatException ignore) {
    // Not a number, skipping
}

使用正则表达式(正则表达式):

另外:

其中()表示无或一次

其中(*)表示一次或多次

其中(+)表示一次或多次


|||你可以成为一名专业人士,你应该认真研究好的变量命名约定。可能重复的只是使用a,我不确定我是否理解作为输入的字符串类型。以下哪项对您的用例有效<代码>字符串noNumbers=“待存或不待存”;带数字的字符串=“2B | |!2B”;字符串intNumber=“222”;字符串floatNumber=“22.2”或者,您希望它们每个返回什么布尔值?例如,在一种情况下,d可能等于100,但可能等于“未找到任何记录”,因此我只是想知道如何使Character.isDigit在我的程序中工作?有什么想法吗?谢谢您不需要
字符。isDigit
-解析
d
将抛出一个
NumberFormatException
,您可以捕获并跳过它,如上所示。它是否适用于数字的十六进制表示?还是二进制的?或者即使使用
1000
格式,您也可以使用正则表达式,但如果您要将其解析为
double
,您也可以尝试按照@Mureinik的建议进行解析,并捕获
NumberFormatException
来处理它是否为
double
String text="25.54";
     if(text.replace(".","").matches("[0-9]+")){ //or you can use also "\\d+"
         System.out.println("digit");
     }else{
      System.out.println("no digit");
     }

     System.out.println(text);