每次我尝试编译我的代码时,都会收到有关缺少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;
}
答案 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)
在isPrime
和isPerfect
方法中,您的代码可能无法进入for循环。要调整它,请在这些方法的末尾添加一个默认返回值或抛出异常。