Java 如何检查字符串是否为浮点数?
在我的程序中,我将把用户输入存储在一个数组中,然后检查每个字符是否是数字、点、E或负号,然后我将它存储在一个名为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
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数组,但输入字符串可能更大
- 不要将字符串与“==”进行比较-使用equalsTo()
- 想想如果sorting()找到一个既不是数字、符号也不是符号的字符意味着什么