这是我的代码:
import static java.lang.System.*;
public class Triples
{
private int number;
public Triples()
{
this(0);
}
public Triples(int num)
{
number = num;
}
public void setNum(int num)
{
number = num;
}
private int greatestCommonFactor(int a, int b, int c)
{
for(int n = 0; n <= number; n++)
{
int max = number;
for(a = 1; a <= max; a++)
{
a = n;
for(b = a +1; b <= max; b++)
{
b =n;
for(c = b + 1; c <= max; c++)
{
c = n;
if(Math.pow(a, 2)+ Math.pow(b, 2)== Math.pow(c, 2))
{
if((a%2==1 && b%2==0)|| (a%2==0 && b%2==1))
{
if(a%2<=1 && b%2<=1 && c%2<=1)
{
return 1;
}
}
}
}
}
}
}
return 1;
}
public String toString()
{
String output="";
output = greatestCommonFactor(a, b, c);
return output+"\n";
}
}
我需要打印出变量a,b和c,但我无法弄清楚如何让它这样做。我当前收到的错误消息是“无法解析为变量” b无法解析为变量 c无法解析为变量“
如果有帮助,请点击相关实验表的链接:https://docs.google.com/open?id=0B_ifaCiEZgtcX08tbW1jNThZZmM
更新 这是我更新的toString方法:
public String toString()
{
int a = 0;
int b = 0;
int c = 0;
String output="";
output += greatestCommonFactor(a, b , c) + "\n";
return output;
}
当我正在编辑时,我最伟大的CommonFactor方法:
private int greatestCommonFactor(int a, int b, int c)
{
for(int n = 0; n <= number; n++)
{
int max = number;
for(a = 1; a <= max; a++)
{
a = n;
for(b = a +1; b <= max; b++)
{
b =n;
for(c = b + 1; c <= max; c++)
{
c = n;
if(Math.pow(a, 2)+ Math.pow(b, 2)== Math.pow(c, 2))
{
if((a%2==1 && b%2==0)|| (a%2==0 && b%2==1))
{
if(a%2<=1 && b%2<=1 && c%2<=1)
{
return greatestCommonFactor(a, b, c);
}
}
}
}
}
}
}
//return 1;
}
更新#2
这是(希望)一种更正确的方法来编写greatCommonFactor和toString方法的代码:
private int greatestCommonFactor(int a, int b, int c)
{
a = 0;
b = 0;
c = 0;
for(int n = 0; n <= number; n++)
{
int max = number;
for(a = 1; a <= max; a++)
{
a = n;
for(b = a +1; b <= max; b++)
{
b =n;
for(c = b + 1; c <= max; c++)
{
c = n;
if(Math.pow(a, 2)+ Math.pow(b, 2)== Math.pow(c, 2))
{
if((a%2==1 && b%2==0)|| (a%2==0 && b%2==1))
{
if(a%2<=1 && b%2<=1 && c%2<=1)
{
return a;
}
}
}
}
}
}
}
return greatestCommonFactor(a, b, c);
}
public String toString()
{
String output="";
output += greatestCommonFactor(a, b , c) + "\n";
return output;
}
添加亚军类
import static java.lang.System.*;
import java.util.Scanner;
public class Lab11j
{
public static void main(String args[])
{
Scanner keyboard = new Scanner(System.in);
String choice="";
do{
out.print("Enter the max number to use : ");
int big = keyboard.nextInt();
//instantiate a TriangleThree object
Triples trip = new Triples( big);
//call the toString method to print the triangle
System.out.println( trip );
System.out.print("Do you want to enter more data? ");
choice=keyboard.next();
}while(choice.equals("Y")||choice.equals("y"));
}
}
答案 0 :(得分:3)
您正在使用变量而不声明和初始化它们:
output = greatestCommonFactor(a, b, c); // where are a, b and c decleared in this method?
此外,你的greatestCommonFactor()
方法接受参数,但除了重新初始化它们之外什么也没做,所以很可能根本不接受任何参数:
private int greatestCommonFactor(int a, int b, int c) {
for (int n = 0; n <= number; n++) {
int max = number;
for (a = 1; a <= max; a++)
// here you're setting a to 1. So why pass its value as an argument to the method,
// since you don't care about the passed in value?
编辑:
而不是
private int greatestCommonFactor(int a, int b, int c) { // these are arguments
a = 0;
b = 0;
c = 0;
...
}
你应该
private int greatestCommonFactor() {
int a = 0;
int b = 0;
int c = 0; // these are local variables
...
}
而不是
public String toString() {
String output="";
output += greatestCommonFactor(a, b , c) + "\n";
return output;
}
你应该
// yes, this method name is ugly, but it says what the method does
// I would simply make greatestCommonFactor a public method, and remove this method,
// since it doesn't do anything useful.
public String computeGreatestCommonFactorAndReturnItAsAStringWithANewLine() {
return greatestCommonFactor() + "\n";
}