首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >循环,初学者

循环,初学者
EN

Stack Overflow用户
提问于 2013-09-03 05:49:14
回答 11查看 6.8K关注 0票数 4

你好,我是Java的初学者,有一个关于循环的问题。

书中的问题是求n的所有奇数位之和。(例如,如果n是32677,那么和就是3+7+7=17。

我不太清楚如何编码,我正在寻找一个人来帮助我。我所拥有的是这段代码,这是第一步,但我不知道如何完成它,也不知道我是对还是错。

任何帮助都会很感激,

代码语言:javascript
复制
public class sumOfOddsInNumber
{
    public static void main(String[] args)
    {

        int n = 0;
        String value = String.valueOf(number);
        int length = value.length();

        while (n < length)
        {
            ... //Idk if this the right first step, how do I start it? where do i go?
EN

回答 11

Stack Overflow用户

发布于 2013-09-03 06:00:52

这段代码可以在不使用任何字符串的情况下完成此任务:

代码语言:javascript
复制
int sum= 0;
int digit=0;
int number= your_value;
while ( number > 0 )
{
    digit=number % 10; // we look at the "last" digit 
    if ( digit %2 == 1 ) // odd digiti
    {
        sum+=digit;
    }
    number/=10;
}
票数 4
EN

Stack Overflow用户

发布于 2013-09-03 05:52:53

我不会给你完整的解决方案,但以下是你需要知道的事情,如果你理解了它们,问题就会变得非常简单:

如果你有一个整数k,你可以用以下命令将其转换为字符串:

代码语言:javascript
复制
String s = String.valueOf(k);

这将允许您更简单地循环遍历字符串的各个字符,这些字符表示数字的数字。然后,您可以使用以下命令逐个迭代字符

代码语言:javascript
复制
char c = s.charAt(0);

其中0可以是循环索引变量,可以从第一个字符(索引0)循环到最后一个字符(字符串s的索引s.length -1)

然后就变成了将它们转换回整数的问题,这很简单,然后检查它们是偶数还是奇数。实现这一点的标准方法是使用一个模数。

代码语言:javascript
复制
int k = 7;
if (k % 2 == 0) //k is even
else //k is odd

这是因为任何数字mod 2只有当它是偶数时才会返回0。否则将返回1。

票数 3
EN

Stack Overflow用户

发布于 2013-09-03 05:58:58

代码语言:javascript
复制
public static int sumOfOddsInNumber(int n)
{
    String valueString = String.valueOf(n);
    int sum = 0;

    for (int i = 0; i < valueString.length(); i++)
    {
        int value = Integer.parseInt(valueString.substring(i, i + 1));
        if (value % 2 != 0)
            sum += value;
    }

    return sum;
}
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18581197

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档