社区
Java SE
帖子详情
这样的问题应该如何解决?
adot111
2003-03-01 12:39:06
要求输入一个Number,要求输出它的even和odd。例如:输入“27473840”输出则是“14840” 和 “773”
请写一下解题思路,和程序。
...全文
35
9
打赏
收藏
这样的问题应该如何解决?
要求输入一个Number,要求输出它的even和odd。例如:输入“27473840”输出则是“14840” 和 “773” 请写一下解题思路,和程序。
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用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
开发过程中遇到
问题
怎么
解决
?
开发过程中遇到
问题
了怎么办 日常开发过程中,总会遇到
问题
,那么遇到
问题
该怎么办呢? 首先我们把
问题
分成大的两类:业务
问题
、技术
问题
。 一、业务
问题
这类
问题
一般跟你的需求和设计相关。大致分下列情况: 1、...
实现分时系统的关键性
问题
是什么?应如何
解决
?
首先我们从本质上去理解什么是分时系统,分时系统就是一个主机连接多个显示器和外设的终端由此组成的系统,高校的部分电脑机房采用的就是分时系统,一台大的主机...这样就
解决
了在分时系统中及时接收、及时处理的
问题
。
MQ 消息丢失、重复、积压
问题
,如何
解决
?
MQ 消息丢失、重复、积压
问题
,如何
解决
?
什么是缓存击穿?如何
解决
?
缓存击穿
问题
也叫热点Key
问题
,就是一个被高并发访问并且缓存重建业务较复杂(意味着对数据库压力相对较大)的key突然失效了(可以理解为redis的缓存突然无了),无数的请求访问会在瞬间给数据库带来巨大的冲击。
什么是跨域?如何
解决
?
例如:a页面想获取b页面资源,如果a、b页面的协议、域名、端口、子域名不同,所进行的访问行动都是跨域的,而浏览器为了安全
问题
一般都限制了跨域访问,也就是不允许跨域请求资源。注意:跨域限制访问,其实是浏览器...
Java SE
62,614
社区成员
307,326
社区内容
发帖
与我相关
我的任务
Java SE
Java 2 Standard Edition
复制链接
扫一扫
分享
社区描述
Java 2 Standard Edition
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章