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

adot111 2003-03-01 12:39:06
要求输入一个Number,要求输出它的even和odd。例如:输入“27473840”输出则是“14840” 和 “773”
请写一下解题思路,和程序。
...全文
35 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
telenths 2003-03-05
  • 打赏
  • 举报
回复
我也收到了你的短信
是呀 这些都是数学上的问题
数学上过关了 用语言实现起来很简单的

大家都说得不错 我就不多说了
对 2 取 mod 是判断奇偶数的简单方法
shine333(shine) 的方法很好 简洁明了
bluesmile979 2003-03-03
  • 打赏
  • 举报
回复
你好,收到你的短信

首先你要保证你的输入都是数字,这个我就不加判断了。其他下面代码通过测试。另,搂住自己也试着写一写吧,总要锻炼的啊。我都认识你了,呵呵。

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 );

}
}
relive 2003-03-03
  • 打赏
  • 举报
回复
因为接收的一般是字符串或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();
firemica 2003-03-02
  • 打赏
  • 举报
回复
应该是:输入“27473840”输出则是“24840” 和 “773”

1.convert to a int array.
2.int a=int[0]......int[length]
3.用取模mod计算一下就可以了。
datapub 2003-03-02
  • 打赏
  • 举报
回复
这各问题要分两部:
第一部:将"27473840"中的各个数字取出,有两种方法:
1。通过除以10的i次方,取得整数部分即可
2。先将"27473840"转换成字符串,取出各个字符,再转换成整数
第二部:判断奇偶
将第一部取得的各个数字,除以2看余数是1,还是0即可
adot111 2003-03-02
  • 打赏
  • 举报
回复
请问,怎么除以10的i次方呢?
shine333 2003-03-02
  • 打赏
  • 举报
回复
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();
水电费123343 2003-03-01
  • 打赏
  • 举报
回复
convert to a String, then check each char
superpig 2003-03-01
  • 打赏
  • 举报
回复
convert to a String, then check each char

62,614

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧