Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/369.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 缺少返回语句的错误_Java - Fatal编程技术网

Java 缺少返回语句的错误

Java 缺少返回语句的错误,java,Java,每次我试图编译我的代码时,我都会得到一个关于缺少return语句的错误。我的代码有什么问题吗 XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX 所以我修正了一些事情,但是现在我得到一个错误,我的变量'result'可能没有初始化,有什么建议吗

每次我试图编译我的代码时,我都会得到一个关于缺少return语句的错误。我的代码有什么问题吗

XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX 所以我修正了一些事情,但是现在我得到一个错误,我的变量'result'可能没有初始化,有什么建议吗

    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;
}
import javax.swing.JOptionPane;
导入java.io.*;
公开课事实
{
公共静态void main(字符串[]args)
{
字符串输入;
int x;
chary,prime,perfect;
做{
input=JOptionPane.showInputDialog(“输入整数”);
x=整数.parseInt(输入);
如果(x%2==0)
System.out.println(“整数是偶数-它可以被2整除”);
其他的
System.out.println(“整数不是偶数-它不能被2整除”);
素数=isPrime(x);
if(prime=='t')
System.out.println(“整数是素数”);
其他的
System.out.println(“整数不是质数”);
完美=isPerfect(x);
如果(完美=='t')
System.out.println(“整数是一个完美的数字”);
其他的
System.out.println(“整数不是完美数”);
input=JOptionPane.showInputDialog(“输入Y代表另一个数字,还有什么要退出的吗”);
y=输入字符(0);
}而(y='y');
System.out.println(“再见”);
系统出口(0);
}            
公共静态字符iPrime(int x)
{

对于(int y=2;y,您需要在
for
循环后放置return语句,并返回默认字符或null,以防无法输入循环。在
isPerfect
中,即使不能输入if

对于
变量“result”可能尚未初始化的问题,问题在于该行:

int result,z,y = 1;
只有
y
变量被初始化为1。由于您可能没有进入while循环,那么return语句将返回
result
,而它尚未初始化,因此您需要显式地为它指定一个值(null或任何整数)。 如果您希望它们都是1,您可以执行以下操作:

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

isPerfect
方法中,如果
if(x%y==0)代码未输入,则没有返回语句
block.

例如,如果在
isPrime
isPerfect
方法中的x,则此代码可能不会返回,您的代码可能不会进入For循环。若要调整它,请在这些方法的末尾放置一个默认返回值或抛出一个异常。

要做的第一件事:修复缩进。要做的第二件事:在所有对象周围添加大括号r
if
语句体(或迟早会)第四个要做的事情:改变一个返回真值或假值的方法,从返回代码< char < /C> >返回<代码>布尔< /代码>。然后考虑你想做什么,如果<代码> x%y永远是0。我想你可能遗漏了至少2个。@ J.J.Schutt,神秘的第三点是什么?@skuntsel我一直在想这是否是Jon Skeet传说中的事实之一:但我什么也找不到。@skuntsel:为什么,当然要想出第三件事;)噢。(我肯定我还有另一件事。可能是写了更短的方法,然后我发现它们毕竟没那么长。)
 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';
            }
        }
    }