A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 松鼠 初级黑马   /  2013-12-16 16:42  /  1407 人查看  /  6 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

我写了一个方法,把传入的数字的整数部分和小数部分分开了。  但是我感觉我写的好麻烦啊。
有没有简单的方法啊。。。
  1. public class TestDigitCount {
  2.         public static void main(String[] args) {
  3.                 int i = 5434789;
  4.                 double d = 344578.976785;
  5.                 digitCount(String.valueOf(i));
  6.                 digitCount(String.valueOf(d));
  7.         }
  8.        
  9.         public static int digitCount(String s) {
  10.                 String s1 = s.replace('.', ',');
  11.                 String[] ss = s1.split(",");
  12.                 if(ss.length == 1) {
  13.                         System.out.println(s1.length());
  14.                 } else if(ss.length == 2) {
  15.                         System.out.println("整数:" + ss[0].length() + "\n" + "小数:" + ss[1].length());
  16.                 } else {
  17.                         System.out.println("Format Error!");
  18.                 }
  19.         }
  20. }
复制代码



评分

参与人数 1技术分 +1 收起 理由
乔兵 + 1

查看全部评分

6 个回复

正序浏览
  1. import java.util.*;

  2. public class helloworld {
  3.         public static void main(String[] args) {

  4.                 Scanner in; // 定义接受键盘输入
  5.                 String msg, s;
  6.                 int i;
  7.                 StringTokenizer st; // 定义分割字符串

  8.                 System.out.println("请输入浮点数?");
  9.                 String[] output = { "整数部分:", "小数部分:" };
  10.                 in = new Scanner(System.in); // 键盘输入流
  11.                 msg = in.nextLine(); // 返回的是一个长度的字符串
  12.                 st = new StringTokenizer(msg, "."); // 字符串分隔解析类型通过“.”分割StringTokenizer
  13.                                                                                         // 用来分割字符串
  14.                 for (i = 0; st.hasMoreElements(); i++) { // 通过for从头到未循环
  15.                                                                                                         // hasMoreElements测试包含元素总数
  16.                         s = st.nextToken();
  17.                         System.out.println(output[i] + s);
  18.                 }
  19.         }
  20. }
复制代码


希望能够帮助到你理解

评分

参与人数 1技术分 +1 收起 理由
乔兵 + 1

查看全部评分

回复 使用道具 举报
本帖最后由 城市儒侠 于 2013-12-16 17:41 编辑

首先,你的函数并不是拆分整数和小数部分。而是计算整数和小数的长度。
其次,你的函数有点问题。返回类型应该是void。
最后,我想了一个稍微貌似简单的方法。实现你的长度计算。你可以借鉴一下:
  1. public class TestDigitCount {
  2. public static void main(String[] args) {
  3. int i = 5434789;
  4. double d = 344578.976785;
  5. digitCount(String.valueOf(i));
  6. digitCount(String.valueOf(d));
  7. }

  8. public static void digitCount(String s) {
  9. int index = s.indexOf(".");
  10. if(index == -1) {
  11. System.out.println(s.length());
  12. } else {
  13. System.out.println("整数:" + index + "\n" + "小数:" + (s.length() - index - 1));
  14. }
  15. }
  16. }
复制代码


评分

参与人数 1技术分 +1 收起 理由
乔兵 + 1

查看全部评分

回复 使用道具 举报
有,如下,我们可以直接调用一个类:

double val=234.5678
String   valStr=String.valueOf(val);
StringTokenizer arrStr=new StringTokenizer (valStr,".");
这样我们得到的数组就是整数部分与小数部分了

StringTokenizer是字符串分析器,分析器使用nextToken()方法一个个获取字符串,通过hasMoreTokens判断是否还有。
所以接下来,看你的了{:soso_e100:}!


评分

参与人数 1技术分 +1 收起 理由
乔兵 + 1

查看全部评分

回复 使用道具 举报
直接用"\\."切简单一点
回复 使用道具 举报
这个方法我觉得很合理,看看楼下还有没有更好的方法。
需要注意的是第9行的返回值类型应该改正为void,否则程序会出错。
回复 使用道具 举报
可以先把数字转成字符串Number,然后用Number.substring(name.lastIndexOf(".")+1)获取小数部分。
Number.substring(0,name.lastindexOf("."))获取整数部分。
最后把字符串转成数值类型...

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马