2 dyi58 dyi58 于 2016.04.14 21:01 提问

JAVA 我想在10到1000之间打印各个数位之和为5的数字,这样写有什么错,新手求大神指点

public class Demo1 {
public static void main(String []args){
int n=10;
int t=n;
int sum=0;
while(t<=1000)
{
t++;
sum=sum+t%10;
t=t/10;
}
if(sum==5)
{
System.out.println("各个数位之和为5的有:"+t);
}
}
}

4个回答

wojiushiwo945you
wojiushiwo945you   Ds   Rxr 2016.04.14 21:38
已采纳

你的代码的while只是统计某个数的各个位上的数值之和,但是又不太正确。正确的是需要两层循环,外层从10-1000;内层循环计算每个数的各个位数和。修正如下:

 public class Demo1 {
    public static void main(String[] args) {
        int n = 10;
        //外层循环从10-1000
        for(int i =n;i<1000;i++){
            int sum = 0;
            int t =i;
            //内层循环,计算i的每个数位上的数字和
            while (t>0) {
                sum = sum + t % 10;
                t = t / 10;
            }
            if (sum == 5) {
                System.out.println("各个数位之和为5的有:" + i);
            }
        }
    }
}

这样测试就OK了。

qq_30408111
qq_30408111   2016.04.14 21:33

你根本就没有把一个数据的个位,十位,百位的数字分离出来,怎么可能算对,你应该先把每个数的各个位置上的数字分离出来,在求和为5的数字

u013429324
u013429324   2016.04.14 21:50

你这个逻辑都是错的,1000以内包括两位数和三位数,分两种情况,两位数取个位和十位相加,三位数取个、十、百位上的数相加,再挑选和为5的数,
存入数组,用数组打印出来,或者只要满足条件就直接打印出来,不存储
你的程序中“sum=sum+t%10;”是不对的,这计算的是1~1000之间每个数其十位数之和
而且t不是数组,每循环一次,其值更新一次,你最终打印出来的只有一个值,所以判断应放在循环内。
public class Demo1 {
public static void main(String []args){
int n=10;
int t=n;
int sum=0;
System.out.println("各个数位之和为5的有:")
while(t<=1000)
{
if(t<100)
{
sum=t/10+t%10;

}else{
sum=t/100+t%(t/10)+t%10;
}
if(sum==5)
System.out.print("%d ,"+t)
t++;
}
}

chenhchen1994
chenhchen1994   2016.04.14 21:55
public class Test01 {
    public static void main(String[] args) {
        // 创建一个List,用来存放各个位数之和为5的数
        List<Integer> list = new ArrayList<Integer>();
        // 循环遍历10-1000之间的数
        for (int i = 10; i < 1000; i++) {

            // 个位数
            int a = i % 10;
            // 十位数
            int b = i / 10 % 10;
            // 百位数
            int c = i / 100;

            // 获得 个 十 百 位 之和
            int result = a + b + c;

            // 判断
            if (result == 5) {
                // 将满足条件的数放到List中
                list.add(i);
            }
        }
        // 循环遍历List
        for (int i = 0; i < list.size(); i++) {
            int  ress = list.get(i);
            System.out.print(ress+" ");
        }
    }
}

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!
其他相关推荐
100到1000之间有多少个数其各位数字之和是5
#include int main() { int i, s, k, count = 0; for (i = 100; i < 1000; i++) { s = 0; k = i; while (k) { s += k % 10; k = k / 10; } if (s != 5) continue; else count++; } p
1000~ 5000之间有多少整数,其各位数字之和为5,分别是哪些数(例如整数2003的各位数字之和为 2+0+0+3 ,等于5))
#include int main(int argc, const char * argv[]) {  //先定义一个接受满足条件的数     int sum=0;     //遍历1000~5000的数     for (int i=1000; i5000; i++) {         //在定义变量接受各位数         int ge = i%10;
CCF NOI1027 数字之和
问题链接:CCF NOI1027 数字之和。 时间限制: 1000 ms  空间限制: 262144 KB 题目描述   对于任意输入的整数,计算其各个数位上的数字之和。 输入   输入一个正整数N。 输出   输出N的各个位上的数字之和。 样例输入 1234 样例输出 10 数据范围限制   问题分析   解
欧拉工程第一题 找出1000以下的自然数中,属于3和5的倍数的数字之和。
题目: 10以下的自然数中,属于3和5的倍数的有3,5,6和9,它们之和是23. 找出1000以下的自然数中,属于3和5的倍数的数字之和。解题方法: 找出1000以下自然数中3的倍数的和,5的倍数的和,15的倍数的和; 3的倍数的和加上5的倍数的和减去15的倍数的和就是所求。程序代码:public class MultiplesOf3And5 { private static lon
Java——三位数的各个位之和
/*  * Copyright (c) 2014, 烟台大学计算机学院  * All rights reserved.  * 文件名称:test.cpp  * 作    者:李晓凯  * 完成日期:2015年 9 月 11 日  * 版 本 号:v1.0  *  * 问题描述:  * 输入描述:  * 程序输出:  */ import java.util.Scann
ACM——01——1003: 【入门】求任意三位数各个数位上数字的和 【运算符】
题目描述 对于一个任意的三位自然数X,编程计算其各个数位上的数字之和S。 输入 输入一行,只有一个整数x(100 输出 输出只有一行,包括1个整数 样例输入 123 样例输出 6   C++代码 #inc lude using namespace std; int main() {        int a,s,d,f,sum;        cin>>a;  
[Java] 算法学习之旅 [0] -- 求任意三位数各个数位上数字的和
题目 - 对于一个任意的三位自然数X,编程计算其各个数位上的数字之和S。 刚拿到题目,能想的出几种做法: 方法1: 转换为文本,在 foreach 中通过 Java 的 String.codePointAt(int index
Java求出任意数字的各个位数之和
import java.util.Scanner; /** * 用JAVA求任意一个数的各个位数之和 * @author Administrator * */ public class test { public static void main(String[] args) { Scanner sc = new Scanner(System.in); System.out.pr...
读取一个在0-99999之间的整数,将该整数的各位数字相加,如求和结果大于9,则继续对所获得的结果数字按各位相加求和,直至求出的和值小于10。
package Second; import java.util.InputMismatchException; import java.util.Scanner; public class Demo3 { /*  * 编写程序: 读取一个在0-99999之间的整数,将该整数的各位数字相加,如求和结果大于9,则继续对所获得的结果数字按各位相加求和,直至求出的和值小于10。
编写一个程序,使用while循环计算1~1000之间能被3和7同时整除的整数之和
编写一个程序,使用while循环计算1~1000之间能被3和7同时整除的整数之和