你好,我是Java的初学者,有一个关于循环的问题。
书中的问题是求n的所有奇数位之和。(例如,如果n是32677,那么和就是3+7+7=17。
我不太清楚如何编码,我正在寻找一个人来帮助我。我所拥有的是这段代码,这是第一步,但我不知道如何完成它,也不知道我是对还是错。
任何帮助都会很感激,
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?发布于 2013-09-03 06:00:52
这段代码可以在不使用任何字符串的情况下完成此任务:
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;
}发布于 2013-09-03 05:52:53
我不会给你完整的解决方案,但以下是你需要知道的事情,如果你理解了它们,问题就会变得非常简单:
如果你有一个整数k,你可以用以下命令将其转换为字符串:
String s = String.valueOf(k);这将允许您更简单地循环遍历字符串的各个字符,这些字符表示数字的数字。然后,您可以使用以下命令逐个迭代字符
char c = s.charAt(0);其中0可以是循环索引变量,可以从第一个字符(索引0)循环到最后一个字符(字符串s的索引s.length -1)
然后就变成了将它们转换回整数的问题,这很简单,然后检查它们是偶数还是奇数。实现这一点的标准方法是使用一个模数。
int k = 7;
if (k % 2 == 0) //k is even
else //k is odd这是因为任何数字mod 2只有当它是偶数时才会返回0。否则将返回1。
发布于 2013-09-03 05:58:58
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;
}https://stackoverflow.com/questions/18581197
复制相似问题