Java 缺少返回语句的错误
每次我试图编译我的代码时,我都会得到一个关于缺少return语句的错误。我的代码有什么问题吗 XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX 所以我修正了一些事情,但是现在我得到一个错误,我的变量'result'可能没有初始化,有什么建议吗Java 缺少返回语句的错误,java,Java,每次我试图编译我的代码时,我都会得到一个关于缺少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循环。若要调整它,请在这些方法的末尾放置一个默认返回值或抛出一个异常。要做的第一件事:修复缩进。要做的第二件事:在所有对象周围添加大括号rif
语句体(或迟早会)第四个要做的事情:改变一个返回真值或假值的方法,从返回代码< 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';
}
}
}