mport javax.swing.JOptionPane;public class YiShuFenJie{
public static void main(String[] args){
String intString = JOptionPane.showInputDialog("Enter a number");
int n =Integer.parseInt(intString);

String output = "";
output += n + "=" + foo(n);

JOptionPane.showMessageDialog(null, output);
}

public static double foo(int i){
for(int k = 2; k <= i; k++){
if(k == i)
return k;

if(k < i && i % k == 0)
return  k * foo(i / k);
}
} //编译显示这行缺少返回语句!!   为什么啊???我弄了一晚上了,高手救救我啊!!!
}

解决方案 »

  1.   

    if(k == i)
    return k;if(k < i && i % k == 0)
    return k * foo(i / k);自己看看 哈 
    如果 k==i  返回 k  ,如果 k < i && i % k == 0 返回k * foo(i / k);
    如果都不是呢? 返回什么? 当然没了  你要在 后面再加一个返回操作 处理都不是的情况 
      

  2.   

    是在for循环里面加吗,我加了也一样啊,要怎么加
      

  3.   

    最后一个if条件如果成立会返回一个值,但是如果这个if条件不成立,则也需要返回值呀,所以你应该在
    if(k < i && i % k == 0)
    return k * foo(i / k);
    }
    后面加一个return语句呀。
      

  4.   


    函数的返回类型是 double  你在后面加哥 return 0; 就可以了 注意外面别被什么条件语句包围,
    你之前的代码因为都被if包围了 也就是说只有 if 条件发生的时候菜返回 要么不能返回
      

  5.   

    package 整数拆分为积;public class HandleNum {
    private int [] array=new int[100];
    private int total ;
    public HandleNum(int total){
    this.total=total;
    for(int i=0;i<array.length;i++)
    array[i]=0; 
    }
    public void print(int dep){
    for(int i=1;i<dep;i++)
    System.out.print(array[i]);
    System.out.println(" ");

    }
    //k为选择的下界 
    public void find(int k ,int sum,int dep){
    if(sum==total){
    array[dep]=k;
    print(dep);
    return;
    }
    else if(sum>total)
    return ;
    else {
    for(int b=k;b<(total/sum+1);b++)
    {
    array[dep]=b;
    find(b,sum*b,dep+1);
    }
    }


    }
    public static void main(String [] args){
    HandleNum hn=new HandleNum(90);
    hn.find(2,1,1);
    }}
      

  6.   

    好复杂啊   用StringBuffer类会比较简单
      

  7.   

    你运行一下看看StringBuffer?  。你在开神马玩笑
      

  8.   

    是这样的:输入90,打印出90=2*3*3*5,用StringBuffer就是相当于吧字符串变量打印出来
      

  9.   

    package 数拆分为素数;public class ChaiFen {
    public static void handle(int i){
    if(i==1)
    System.out.println("1");

    else
    {
    for(int j=2;j<=i;j++){
    int p=0;
    p=i/j;           if(p*j==i){
        if(p==1){
        System.out.println(j);
        return ;
        }
    System.out.println(j);
    handle(p);
    break;
    }


    }
    }
    }
    public static void main(String []args){ ChaiFen.handle(90);
    }}
    这个吧?
      

  10.   

    #include "stdafx.h"
    #include <iostream>
    using namespace std;double foo(int i)
    {
    for(int k = 2; k <= i; k++)
    {
    if(k == i)
    {
    cout  << k << endl;
    return k;
    }
    else if(k < i &&  i % k == 0)
    {
    cout << k << " * ";//这里记得输出数字时后面接着输出个“*”这样就是楼主要的结果了。
    return k * foo(i / k);
    }
    }
    cout << i << endl;
    return i;
    }
    int main(int argc, char* argv[])
    {
    int i = 90;
    cout << i << " = ";
    foo(i); return 0;
    }//输出结果为90 = 2 * 3 * 3 * 5
    LZ,你只要把cout << ……,这些改成JAVA里面的输出函数就可以了,我这是用C++写的,java有点不太记得。
      

  11.   

    mport javax.swing.JOptionPane;public class YiShuFenJie{
    public static void main(String[] args){
    String intString = JOptionPane.showInputDialog("Enter a number");
    int n =Integer.parseInt(intString);String output = "";
    output += n + "=" + foo(n);JOptionPane.showMessageDialog(null, output);
    } public static double foo(int i){
    for(int k = 2; k <= i; k++){
    if(k == i)
    return k;else
    return k * foo(i / k);
    }