私の問題は、値とすべてを正しく出力しているにもかかわらず、より高い値をテストする必要があることです。これは、サンプル入力の最大値である110よりも明らかに小さい値です。
これが私のコードです:
import static java.lang.System.*;
public class Triples
{
private int first;
private int second;
private int third;
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)
{
int g;
int h;
if(a<b && a<c)
g = a;
else if(b< a && b<c)
g = b;
else
g = c;
for(int i = g; i > 0; i--)
{
if((a%i == 0) && (b%i == 0))
{
h = i;
for(int j = i; j>0; j--)
{
if((h%j==0) && (c%j == 0))
{
return j;
}
}
}
}
return -1;
}
public String check4Triples()
{
int max = number;
String amIdoneYet;
//int a;
//int b;
//int c;
for(int n = 1; n <= max; n++)
//{
for(int a = n; a <= max; a++)
{
first = a;
for(int b = a +1; b <= max; b++)
{
second =b;
for(int c = b + 1; c <= max; c++)
{
third = c;
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(this.greatestCommonFactor(a, b, c)== 1)
{
amIdoneYet = "";
amIdoneYet += a + " " + b + " "+ c;
return amIdoneYet;
}
}
}
}
}
}
return null;
}
public String toString()
{
String output=" ";
output += check4Triples() + " \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 triple = new Triples(big);
//call the toString method to print the triple
out.println( triple );
System.out.print("Do you want to enter more data? ");
choice=keyboard.next();
}while(choice.equals("Y")||choice.equals("y"));
}
}
出力は次のようになります。
- 3 4 5
- 5 12 13
- 7 24 25
- 8 15 17
- 9 40 41
- 11 60 61
- 12 35 37
- 13 84 85
- 16 63 65
- 20 21 29
- 20 99101
- 28 45 53
- 33 56 65
- 36 77 85
- 39 80 89
- 48 55 73
- 60 91109
- 65 72 97
更新
いくつか考えてみたところ、問題はforループが再び進むかどうかを知る方法がないことだと思います...私はまだ問題が私のランナークラスに何らかの形で関係していると思っています。しかし、私のcheck4Triples
方法では、基本的に、適用可能な最も低い3つの数値を見つけるように指示するだけです。他の値もチェックするように指示する方法がわかりません