CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
山寨机中的战斗机! 程序优化工程师到底对IT界有没有贡献
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  Java >  J2SE / 基础类

这样的问题应该如何解决?

楼主adot111(安定)2003-03-01 00:39:06 在 Java / J2SE / 基础类 提问

要求输入一个Number,要求输出它的even和odd。例如:输入“27473840”输出则是“14840”   和   “773”  
  请写一下解题思路,和程序。 问题点数:60、回复次数:9Top

1 楼superpig(黄飞鸿)回复于 2003-03-01 04:37:33 得分 0

convert   to   a   String,   then   check   each   charTop

2 楼wkrain(戈壁一沙鸥)回复于 2003-03-01 18:18:06 得分 0

convert   to   a   String,   then   check   each   char  
  Top

3 楼firemica(熊熊||╭∩╮(︶︿︶)╭∩╮)回复于 2003-03-02 00:45:20 得分 5

应该是:输入“27473840”输出则是“24840”   和   “773”  
   
  1.convert   to   a   int   array.  
  2.int   a=int[0]......int[length]  
  3.用取模mod计算一下就可以了。Top

4 楼datapub(blueidea)回复于 2003-03-02 10:54:19 得分 5

这各问题要分两部:  
  第一部:将"27473840"中的各个数字取出,有两种方法:  
            1。通过除以10的i次方,取得整数部分即可  
            2。先将"27473840"转换成字符串,取出各个字符,再转换成整数  
  第二部:判断奇偶  
            将第一部取得的各个数字,除以2看余数是1,还是0即可Top

5 楼shine333(enihs)回复于 2003-03-02 14:09:24 得分 10

String   input="27473840";   //or   created   in   other   ways.  
  StringBuffer[]   buf={new   StringBuffer(),new   StringBuffer()};  
  for(int   i=0;i<input.length();i++){  
        char   c=input.charAt(i);  
        buf[(c-'0')%2].append(c);  
  }  
  String   s1=buf[0].toString();  
  String   s2=buf[1].toString();  
  Top

6 楼adot111(安定)回复于 2003-03-02 18:26:46 得分 0

请问,怎么除以10的i次方呢?Top

7 楼relive(六道轮回,无想转生)回复于 2003-03-03 16:39:30 得分 15

因为接收的一般是字符串或byte[],所以可以认为原始数据类型是String(byte[]用new   String(byte[]),非String的用.toString().trim())  
  最容易理解的方案:挨个判断奇偶性  
          String   input   =   "27473840";  
          String   even   =   "";  
          String   odd   =   "";  
          for   (int   i   =   0;   i   <   input.length();   i++)  
          {  
                  int   n   =   new   Integer(input.substring(i,   i   +   1)).intValue();  
                  if   (n   %   2   ==   0)  
                          even   =   even   +   n;  
                  else  
                          odd   =   odd   +   n;  
          }  
  该方案的变通方案:shine333(shine)的方式,用两个元素的String[]存储结果,元素0放偶数,元素1放奇数  
          String   input   =   "27473840";  
          StringBuffer[]   buf   =   {   new   StringBuffer(),   new   StringBuffer()};  
          for   (int   i   =   0;   i   <   input.length();   i++)  
          {  
                  char   c   =   input.charAt(i);  
                  buf[(c   -   '0')   %   2].append(c);//这里借用c   -   '0'==new   Integer(String.valueOf(c)).intValue()的结果,所以把偶数放入元素0中,奇数放入元素1  
          }  
          String   even   =   buf[0].toString();  
          String   odd   =   buf[1].toString();  
   
  当然,还有一些其他办法,就不多说了。  
   
  10的i次幂:Math.pow(10,   i)这是数学函数里自带的。  
   
  另,对于int类型,你是不是准备用10的i次幂啊?其实没必要。  
  int   input   =   27473840;  
  StringBuffer   evenB   =   new   StringBuffer();  
  StringBuffer   oddB   =   new   StringBuffer();  
  for   (;   input   >   0;   input   =   input   /   10)  
  {  
  if   (input   %   2   ==   0)  
  evenB.append(input   %   10);  
  else  
  oddB.append(input   %   10);  
  }  
  String   even   =   evenB.reverse().toString();  
  String   odd   =   oddB.reverse().toString();  
  Top

8 楼bluesmile979(笑着)回复于 2003-03-03 17:04:38 得分 15

你好,收到你的短信  
   
  首先你要保证你的输入都是数字,这个我就不加判断了。其他下面代码通过测试。另,搂住自己也试着写一写吧,总要锻炼的啊。我都认识你了,呵呵。  
   
  class   hehe    
  {  
  public   static   void   main(String[]   args)    
  {  
  String   str   =   "127473840";  
  byte[]   by   =   str.getBytes();  
  StringBuffer   sb1   =   new   StringBuffer();  
  StringBuffer   sb2   =   new   StringBuffer();  
  for(int   i   =   0;   i   <   by.length;   i++   ){  
  System.out.println(by[i]);  
  if(   by[   i   ]   ==   49   ){  
  sb1.append(   1   );  
  }else   if(   (   by[   i   ]   %   2   )   ==   0   ){  
  sb1.append(   (   by[   i   ]   -   48   )   );  
  }else{  
  sb2.append(   by[   i   ]   -   48   );  
  }  
  }  
   
  String   even   =   sb1.toString();  
  String   odd   =   sb2.toString();  
  System.out.println(   even   );  
  System.out.println(   odd   );  
   
  }  
  }Top

9 楼telenths(_非法操作_)回复于 2003-03-05 14:38:37 得分 10

我也收到了你的短信  
  是呀   这些都是数学上的问题  
  数学上过关了   用语言实现起来很简单的  
   
  大家都说得不错   我就不多说了  
  对   2   取   mod   是判断奇偶数的简单方法  
    shine333(shine)     的方法很好   简洁明了Top

相关问题

  • 这样的SQL应该如何写?
  • 这样的表应该如何设计?
  • 这样的数组,应该如何写?!应该很简单的,散分!
  • 请问这样的查询应该如何做
  • 这样的存储过程应该如何写?
  • 这样的提示应该如何做呀!
  • 高手请进,我这样的水平应该如何发展?
  • 这样的查询应该如何写。(十分紧急!!!)
  • 这样的sql语句应该如何写
  • 这样的汇总应该如何做呢??(SQL语句)/(IB)

关键词

  • 数字
  • stringbuffer
  • 输入
  • 输出
  • input

得分解答快速导航

  • 帖主:adot111
  • firemica
  • datapub
  • shine333
  • relive
  • bluesmile979
  • telenths

相关链接

  • CSDN Java频道
  • Java类图书
  • Java类源码下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
北京创新乐知广告有限公司 版权所有, 京 ICP 证 070598 号
世纪乐知(北京)网络技术有限公司 提供技术支持
Copyright © 2000-2008, CSDN.NET, All Rights Reserved
GongshangLogo