缺少return语句的错误

时间:2013-05-01 19:46:16

标签: java

每次我尝试编译我的代码时,都会收到有关缺少return语句的错误。关于我的代码什么错误的任何想法?

xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 所以我修复了一些事情,但现在我得到一个错误,我的变量'结果'可能没有被初始化,有什么建议?

    import javax.swing.JOptionPane;
    import java.io.*;
    public class facts
    {
      public static void main(String[]args)
    {

    String input;
    int x;
    char y,prime,perfect;
            do{
        input = JOptionPane.showInputDialog("Enter an integer");
        x = Integer.parseInt(input);
        if(x%2==0)
                System.out.println("The integer is even - it is evenly divisible by 2");
            else
                System.out.println("The integer is not even - it is not evenly divisible by 2");
            prime = isPrime(x);     
            if(prime == 't')
                System.out.println("The integer is a prime number");
            else
                System.out.println("The integer is not a prime number");
            perfect = isPerfect(x);
            if(perfect == 't')
                System.out.println("The integer is a perfect number");
            else
                System.out.println("The integer is not a perfect number");

        input = JOptionPane.showInputDialog("Enter Y for another number, anything else to quit");
        y = input.charAt(0);
        }while(y=='Y');
            System.out.println("Good Bye");

            System.exit(0);
}            
    public static char isPrime(int x)
    {
        for(int y=2;y<x;y++)
        {
            if(x%y==0)
                return 't';
            else 
                return 'f';
        }
    }
    public static char isPerfect(int x)


 public static int triAng(int x)
{
    int result,z,y = 1;
    while(y<=x)
    {
        z=y*(y+1)/2;
        y++;
        System.out.println(z);
        result = z;
    }
    return result;
}

4 个答案:

答案 0 :(得分:2)

您需要在for循环之后放置return语句并返回默认char或null,以防不输入循环。在您的isPerfect中,甚至可能无法输入。

对于您的variable 'result' might not have been initialized问题,问题是该行:

int result,z,y = 1;

只有y变量被初始化为1.因为你可能没有输入while循环,所以return语句将返回result,因为它尚未初始化,所以你需要明确指定一个它的值(null或任何整数)。 如果你希望他们都是1,你可以做到:

int result,z,y;
result = z = y = 1;

答案 1 :(得分:0)

isPerfect方法中,对于if(x%y==0)阻止代码未输入的情况,您没有返回语句。

答案 2 :(得分:0)

例如,如果x&lt; = 1或x%y从不为0,则此代码可能不会返回:

 public static char isPerfect(int x)
    {
        int y,z=0;
        for(y=1;y<x;y++)
        {
            if(x%y==0)
            {
                z+=y;
                if(z==x)
                    return 't';
                else
                    return 'f';
            }
        }
    }

答案 3 :(得分:0)

isPrimeisPerfect方法中,您的代码可能无法进入for循环。要调整它,请在这些方法的末尾添加一个默认返回值或抛出异常。