我的代码如下:(请各位帮我看看是哪里有问题啊,用eclipse编译没错,提示异常)
import javax.swing.JOptionPane;
import java.lang.Math;
public class TestSumDigits {
 public static void main(String[] args){
 
 String num = JOptionPane.showInputDialog(null,"Enter the number what you want:");
 int number = Integer.parseInt(num);
 int result = sumDigits(number);
 String output = "the number is"+number+",and the sum is"+result+".";
 JOptionPane.showMessageDialog(null,output);
 }
 public static int sumDigits(int n){
 int m = n;
 int sum = 0;
 int count = 0;
 while(n!=0){
 n=n/10;
 count++;
 }
 int[] number1 = new int[count];
 int[] number2 = new int[count];
 number1[0]=m;
 number2[0]=m;
 for(int i=1;i<=count;i++){
 number1[i]=(int) (number2[i-1]%(Math.pow(10,i)));
 number2[i]=(int) (number2[i-1]/(Math.pow(10, i)));
 sum=sum + number1[i];
 
 }
 
 
return sum;
 
 }
}

解决方案 »

  1.   

    for(int i=1;i<=count;i++)
    改为
    for (int i = 1; i < count; i++) 
      

  2.   

    代码有问题啊,输入123,输出15.问题出在number1[i]=(int) (number2[i-1]%(Math.pow(10,i)));
    number2[i]=(int) (number2[i-1]/(Math.pow(10, i)));
    sum=sum + number1[i];
      

  3.   

    改为从低位计算:public static int sumDigits(int n){
    int m = n;
    int sum = 0;
    while (m!=0){
    sum+=m%10;
    m=m/10;
    }
    return sum;
    }
      

  4.   

    你那个的确有点麻烦了。我还没看懂。但是通过你的题目把代码改了一下:
    public class TestSumDigits {
    public static void main(String[] args) { String num = JOptionPane.showInputDialog(null,
    "Enter the number what you want:");
    int number = Integer.parseInt(num);
    int result = sumDigits(number);
    String output = "the number is" + number + ",and the sum is" + result
    + ".";
    JOptionPane.showMessageDialog(null, output);
    } public static int sumDigits(int n) {
    int m = n;
    int sum = 0;
    int count = 0;
    while (n != 0) {
    sum = n % 10 + sum;
    n = n / 10;
    } return sum; }
    }
      

  5.   

    import javax.swing.JOptionPane;
    import java.lang.Math;
    public class TestSumDigits {
    public static void main(String[] args){
      
    String num = JOptionPane.showInputDialog(null,"Enter the number what you want:");
    int number = Integer.parseInt(num);
    int result = sumDigits(number);
    String output = "the number is"+number+",and the sum is"+result+".";
    JOptionPane.showMessageDialog(null,output);
     }
    public static int sumDigits(int n){
    int m = n;
    int sum = 0;
    int count = 0;
    while(n!=0){
    n=n/10;
    count++;
    System.out.println("count="+count);
    }
    int[] number1 = new int[count];
    int[] number2 = new int[count];
    number1[0]=m;
    System.out.println("number1[0]="+number1[0]);
    number2[0]=m;
    System.out.println("number2[0]="+number2[0]);
    for(int i=1;i<count;i++){
    number1[i]=(int) (number2[i-1]%10);
    System.out.println("number1["+i+"]="+number1[i]);
    number2[i]=(int) (number2[i-1]/10);
    System.out.println("number2["+i+"]="+number2[i]);
    sum=sum + number1[i];
    System.out.println("sum="+sum);
    }  
    return sum+number2[count-1]; 
     }
    }
      

  6.   

    pow(double a, double b) 返回第一个参数的第二个参数次幂的值。
    当i=2,3,4……是,分母已经很大了,取余还 有什么效果啊!
      

  7.   

    不好意思,一些测试项没有去掉。
    import javax.swing.JOptionPane;
    import java.lang.Math;
    public class TestSumDigits {
    public static void main(String[] args){
      
    String num = JOptionPane.showInputDialog(null,"Enter the number what you want:");
    int number = Integer.parseInt(num);
    int result = sumDigits(number);
    String output = "the number is"+number+",and the sum is"+result+".";
    JOptionPane.showMessageDialog(null,output);
     }
    public static int sumDigits(int n){
    int m = n;
    int sum = 0;
    int count = 0;
    while(n!=0){
    n=n/10;
    count++;
    }
    int[] number1 = new int[count];
    int[] number2 = new int[count];
    number1[0]=m;
    number2[0]=m;
    for(int i=1;i<count;i++){
    number1[i]=(int) (number2[i-1]%10);
    number2[i]=(int) (number2[i-1]/10);
    sum=sum + number1[i];
    }  
    return sum+number2[count-1]; 
     }
    }
      

  8.   

    public static int sumDigits(int n) {
    int sum = 0;
    while(n > 0){
    sum += n%10;
    n = n/10;
    }
    return sum;
    }