字符串的值转换成浮点型(Java)

任务描述

创建一个类(DoubleConverter),该类的作用是将一个数值字符串转换成浮点型(double)数值。

相关知识

为了完成本关任务,你需要掌握:String类的有关方法的使用。

要求

创建一个类DoubleConverter,有二个公有方法: public boolean check(String value);//value为将转换的字符串,检查该字符串是不是有效的数值字符串,如是返回true,否则返回false; public double convert(String value); //value为将转换的字符串, 返回为转换后的浮点数,如果返回为0.0,表明用户输入的字符串不是数值串.

提示

合理的浮点表示方法有如下几种形式: 123456 123456.123 +123456.12 = 123456.12 -123456.12 .1234 = 0.1234

       我经过查找学习,发现了一些数据类型转换函数能很好地解决问题,比如Double.parseDouble(),是把括号里面的内容变成double类型的,类似还有Integer.parseInt()是将之变成int类型的。还有toCharArray()用法,是将字符串对象中的字符转换为一个字符数组的。

下面我将用这些方法进行两个公有方法的完成:

package step1;

public class DoubleConverter{
   //在此完成该类
   public boolean check(String value){
      char a[] = value.toCharArray();
      int i,b=1;
      if((a[0]>='0'&&a[0]<='9')||a[0]=='+'||a[0]=='-'||a[0]=='.')
      {
         for (i=1;i<a.length;i++){
            if(a[i]>='0'&&a[i]<='9'||a[i]=='.')
            b=1;
            else
            b=0;
            }
            if(b==0)
            return false;
            else 
            return true;
         }
         else
         return false;
      }

   public double convert(String value)
   {
      double x=Double.parseDouble(value);
      return x;
   }

 }

      不用数据类型转换函数的,比较麻烦,需要自己好好思考。首先我们不用上面的字符串转换数组,我们用length()来获取字符串的长度,并以int型变量返回该字符串的长度;用charAt(i)来获取字符串中i位置的字符,判断方法与上面方法略有不同,是总体遍历符不符合,用if—else if来更好判断。

       第二个方法也不用Java现有的函数,用数学方法来完成,我在此处多次犯错,下面的代码是查了一些资料结合着完善改正的:

package step1;
 
public class DoubleConverter {
	public boolean check(String value) {
		int len = value.length();//获取字符串的长度,并以int型变量返回该字符串的长度
		int flag = 1;
		for(int i = 0;i < len;i++)
		{
			if(value.charAt(i) == '.'||value.charAt(i) == '+'||value.charAt(i) == '-')continue;//charAt(i)函数是获取字符串中i位置的字符
			else if((value.charAt(i) < '0'||value.charAt(i) > '9')) {
				flag  = 0;
				break;
			}
		}
		if(flag == 1) {
			return true;
		}
		else return false;
		
	}
	public double convert(String value) {
		if(check(value)) {
			double num = 0.0;
			int a = 1;//用来判断正负
			int b = 1;//用来标记字符串中小数点出现
			int v = 0;
			for(int i = 0;i < value.length();i++) {
				if(value.charAt(i) == '-') {
					a = 0;
                    continue;
				}
				else if(value.charAt(i) == '+')
				{
					a = 1; 
                    continue;
				}
				if(value.charAt(i) == '.') {
					b = 0;
					v = i;
					continue;
				}
				if(b == 0) {
					num += (value.charAt(i)-'0')*Math.pow(10,v-i);
				}
				else {
					num = num*10+(value.charAt(i)-'0');
				}
			}
			if(num!=0) {
				if(a == 0)
					num *= -1.0;
                
			}
            return num;
	
		}
		else return 0.0;
	}
	
}

 

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值