2016-11-02 5 views
-1

私はコンピュータ科学のクラスのプログラムをJavaで書いていましたが、エラーはありませんが実行されません。私もinファイルでそれをしなければなりません。infangleで三角形のプログラム

を追従しているGeometry.INファイルで

import java.util.Scanner; 
import java.io.File; 
import java.io.IOException; 

public class GeeImATree { 

public static boolean isEquilateral(double sideA, double sideB, double sideC) { 
    if(sideA == sideB && sideB == sideC) { 
     return true; 
    } 
return false; 
} 
public static boolean isIsosceles(double sideA, double sideB, double sideC) { 
    if(!isEquilateral(sideA,sideB,sideC)){ 
     return (sideA == sideB || sideB == sideC || sideA == sideC); 
    } 
    return false; 
} 
public static boolean isRight(double sideA, double sideB, double sideC) { 
    if(!isEquilateral(sideA,sideB,sideC) && !isIsosceles(sideA,sideB,sideC)){ 
     return ((sideA*sideA) == (sideB*sideB)+(sideC*sideC) || (sideB*sideB) == (sideA*sideA)+(sideC*sideC) || (sideC*sideC) == (sideA*sideA)+(sideB*sideB)); 
    } 
    return false; 
} 
public static boolean isObtuse(double sideA, double sideB, double sideC) { 
    if (!isEquilateral(sideA,sideB,sideC) && !isIsosceles(sideA,sideB,sideC) && !isRight(sideA,sideB,sideC)) { 
     return ((sideA*sideA) > (sideB*sideB)+(sideC*sideC) || (sideB*sideB) > (sideA*sideA) + (sideC*sideC) || (sideC*sideC) > (sideA*sideA)+(sideB*sideB)); 
    } 
    return false; 
} 
public static boolean isAcute(double sideA, double b, double c) { 
    if(!isEquilateral(sideA,b,c) && !isIsosceles(sideA,b,c) && !isRight(sideA,b,c) && !isObtuse(sideA,b,c)){ 
     return((sideA*sideA) < (b*b)+(c*c) || (b*b) < (sideA*sideA) + (c*c) || (c*c) < (sideA*sideA)+(b*b)); 
    } 
    return false; 
} 
public static void main(String[] args) throws IOException { 
    // TODO Auto-generated method stub 

    File infile = new File("GEOMETRY.IN"); 
    Scanner scan = new Scanner(infile); 
    double x1, y1, x2, y2, x3, y3; 
    while(scan.hasNext()) 
    { 
     x1 = scan.nextInt(); 
     y1 = scan.nextInt(); 
     x2 = scan.nextInt(); 
     y2 = scan.nextInt(); 
     x3 = scan.nextInt(); 
     y3 = scan.nextInt(); 

     double sideA = Math.sqrt(Math.pow(x2 - x1, 2) + Math.pow(y2 - y1, 2)); 
     double sideB = Math.sqrt(Math.pow(x3 - x1, 2) + Math.pow(y3 - y1, 2)); 
     double sideC = Math.sqrt(Math.pow(x3 - x2, 2) + Math.pow(y3 - y2, 2)); 

    System.out.println("a= "+sideA+", b= "+sideB+", c= "+sideC); 
    if (isEquilateral(sideA,sideB,sideC)) 
     System.out.println("Equilateral"); 
    if (isIsosceles(sideA,sideB,sideC)) 
     System.out.println("Isosceles"); 
    if (isRight(sideA,sideB,sideC)) 
     System.out.println("Right"); 
    if (isObtuse(sideA,sideB,sideC)) 
     System.out.println("Obtuse"); 
    if (isAcute(sideA,sideB,sideC)) 
     System.out.println("Acute little triangle"); 
    System.out.println("/n-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_"); 
    } 
scan.close(); 
} 

} 

: コードされた私がしようとしているプロジェクトは、ここにあるエラーメッセージがここにここ

Exception in thread "main" java.util.InputMismatchException 
at java.util.Scanner.throwFor(Scanner.java:864) 
at java.util.Scanner.next(Scanner.java:1485) 
at java.util.Scanner.nextInt(Scanner.java:2117) 
at java.util.Scanner.nextInt(Scanner.java:2076) 
at GeeImATree.main(GeeImATree.java:58) 

http://www.doralacademyprep.org/ourpages/auto/2016/10/28/50508547/C1%20PRG%20JR.pdf

ある

0 0 3.5 1.2 9.85 2 
0 0 5 0 5 9 
0 0 6 8 8 0 
0 0 3 7 1 7 
0 0 8 4 8 -4 
+0

あなたはファイルジオメトリを投稿する必要があります。 – user6904265

+0

私はGEOMETRY.INの内容を質問 – icecreeper01

答えて

0

You sh

x1 = scan.nextDouble(); 
y1 = scan.nextDouble(); 
x2 = scan.nextDouble(); 
y2 = scan.nextDouble(); 
x3 = scan.nextDouble(); 
y3 = scan.nextDouble(); 

と、このファイルを使用してみてください::nextDouble()を使用ウルド

0 0 3,5 1,2 9,85 2 
0 0 5 0 5 9 
0 0 6 8 8 0 
0 0 3 7 1 7 
0 0 8 4 8 -4 

をさらにあなたは、たとえば、乗算結果を丸めるする必要があります。

public static boolean isRight(double sideA, double sideB, double sideC) { 
    if(!isEquilateral(sideA,sideB,sideC) && !isIsosceles(sideA,sideB,sideC)){ 
     return (Math.round(sideA*sideA) == Math.round(sideB*sideB)+Math.round(sideC*sideC) || Math.round(sideB*sideB) == Math.round(sideA*sideA)+Math.round(sideC*sideC) || Math.round(sideC*sideC) == Math.round(sideA*sideA)+Math.round(sideB*sideB)); 
    } 
    return false; 
+0

に追加しましたYessそれは今、ありがとうございますが、もう1つの質問は2番目の値のセットです0 0 5 0 5 9それはobtuse buを返します私の論文では直角三角形を返してくださいと言っている – icecreeper01

+0

数字を丸める必要があるので、答えにisRightメソッドを書きました。 – user6904265

+0

double sideA sideBとsideCにmath.roundを追加しましたが、出力2(直角三角形でなければなりません)と出力3(二重でなければなりません)のためのAcuteを返します。 – icecreeper01