| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 654 人关注过本帖
标题:请各位指教,找找错误,这个程序运行不了啊!
只看楼主 加入收藏
myhnuhai
Rank: 10Rank: 10Rank: 10
等 级:青峰侠
威 望:3
帖 子:425
专家分:1725
注 册:2010-3-17
结帖率:87.5%
收藏
已结贴  问题点数:5 回复次数:4 
请各位指教,找找错误,这个程序运行不了啊!
程序的作用是输入一个长整数然后计算各个位数的和!例如:12345  和为:1+2+3+4+5=15,谢谢啦!!

import javax.swing.JOptionPane;
public class Sum {

    public static void main(String[] args) {
        String number =JOptionPane.showInputDialog("请输入一个整数!");
        int  m=number.length();;
        int sum=0,i;
        int n=Integer.parseInt(number);
        int arr[]=new int[m-1];
        String output="";
        for( i=0;i<=number.length()-1;i++){
            arr[i]=n/(int)Math.pow(10,m-i);
            sum +=arr[i];
            arr[i]=n % (int)Math.pow(10,m-i);
            output ="各位数之和为: "+sum;
        }
        JOptionPane.showMessageDialog(null,output);
    }

}
搜索更多相关主题的帖子: 指教 运行 
2010-04-19 12:46
linjx0123
Rank: 9Rank: 9Rank: 9
等 级:贵宾
威 望:14
帖 子:279
专家分:1362
注 册:2006-4-7
收藏
得分:2 
1 这个程序,之所以运行错误,是因为数组声明太小。"int arr[]=new int[m-1]; " arr只有m-1个,
  而“ for( i=0;i<=number.length()-1;i++){”循环次数是m个,所以错误。需要把
  int arr[]=new int[m-1]; 改成int arr[]=new int[m];
2 楼主的逻辑错误,这个程序不能求出各个位数之和.得到的是0+1+12+123+1234
  arr[i]=n % (int)Math.pow(10,m-i);这句没有起到任何作用。
3 正确的程序为
    public static void main(String[] args) throws IOException {
        String number =JOptionPane.showInputDialog("请输入一个整数!");
        int n=Integer.parseInt(number);
        int sum=0;
        while(n!=0){
            sum+=n%10;
            n=n/10;
        }
        JOptionPane.showMessageDialog(null,"各位数之和为:"+sum);
    }
最后说明一点,Math.pow(10,m-i);幂函数的效率并不高,能有更好的方法当然不用的好
2010-04-19 13:26
lampeter123
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:54
帖 子:2508
专家分:6424
注 册:2009-1-30
收藏
得分:2 
按你的程序,可以这样改:

import javax.swing.JOptionPane;
public class Sum {

    public static void main(String[] args) {
        String number =JOptionPane.showInputDialog("请输入一个整数!")
        int  m=number.length();
        int sum=0,i;
        int n=Integer.parseInt(number);
        int arr[]=new int[m];
        String output="";
        for( i=0;i<=number.length()-1;i++){
               
            arr[i]=n/(int)Math.pow(10,m-i-1);
            arr[i]=arr[i] % 10;
            sum +=arr[i];
            System.out.println("arr[" + i +"]=" + arr[i]);//输出每位数的值
            output ="各位数之和为: "+sum;
        }
        JOptionPane.showMessageDialog(null,output);
    }

}

你的优秀和我的人生无关!!!!
    
    我要过的,是属于我自己的生活~~~
2010-04-19 13:29
我为球狂
Rank: 1
等 级:新手上路
帖 子:17
专家分:1
注 册:2008-10-5
收藏
得分:1 
你的问题是数组越界,定义数组时应该为int arr[] = new int[m];
再则,你这种求各数之和的做法不好;
import javax.swing.JOptionPane;

public class Sum {

    public static void main(String[] args) {
        String number = JOptionPane.showInputDialog("请输入一个整数!");
        int length = number.length();
        int sum = 0;
        while (length > 0) {
            sum += Integer.parseInt(number.charAt(length - 1) + "");// 将字符转换成对应的数字
            length--;
        }
        JOptionPane.showMessageDialog(null, "各位数之和为" + sum);
    }

}
2010-04-19 13:50
myhnuhai
Rank: 10Rank: 10Rank: 10
等 级:青峰侠
威 望:3
帖 子:425
专家分:1725
注 册:2010-3-17
收藏
得分:0 
谢谢各位的指正,小弟会加倍努力,呵呵呵!!

不要让肮脏的记忆,迷失了原本纯洁的心灵!
2010-04-19 14:35
快速回复:请各位指教,找找错误,这个程序运行不了啊!
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.019874 second(s), 9 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved