建一个类(DoubleConverter),该类的作用是将一个字符串的值转换成浮点型(double)数值。
要求:设计一个测试类来测试DoubleConverter。当测试类开始运行时,要求用户从键盘输入一个字符串,然后调用DoubleConverter的方法将字符串转换成为一个浮点型的数值。当用户输入的字符串不是浮点数时,该方法应该提示错误,并退出程序;否则返回该数值。
提示:把这两个类放在包内。不能使用Java内置的Integer类和Scanner类,而必须使用String类的charAt等方法提取每一个数字。
代码如下:
package DoubleConverter;
import java.util.Scanner;
/**
* @author 芳芳
*/
public class test {
private String result;
public static void main(String[] args) {
@SuppressWarnings("resource")
Scanner input = new Scanner(System.in);
System.out.println("please input a string:");
String org = input.next();
while (!isFloat(org)) {
System.out.println("error occurred!");
org = input.next();
}
boolean isSuccess;
test doubleConverter = new test();
isSuccess = doubleConverter.convert(org);
if (isSuccess){
System.out.println("the result is:"+ doubleConverter.result);
}
}
private boolean convert(String org) {
// TODO 自动生成的方法存根
return false;
}
public static boolean isFloat(String org){
char charArray[] = org.toCharArray();
int figureNum = 0;
int pointNum = 0;
for(int i = 0;i < org.length();i++){
if(charArray[i] == '.'){
pointNum++;
}
if(charArray[i] <= '9' && charArray[i] >= '0'){
figureNum++;
}
if(pointNum == 1 && figureNum + pointNum == org.length()){
return true;
}
}
return false;
}
public class DoubleConverter{
double result = 0;
public boolean convert(String org){
int pointPosition = org.indexOf('.');
pointPosition--;
for(int i = 0;i < org.length();i++){
if(org.charAt(i) == '.') continue;
result = result + Math.pow(10,pointPosition)* Integer.parseInt(String.valueOf(org.charAt(i)));
pointPosition--;
}
return true;
}
}
}