2007年11月8日 星期四

期中考程式答案

第三題
import java.io.FileInputStream;
import java.io.DataInputStream;
import java.io.IOException;
import java.io.PrintStream;
import java.io.FileOutputStream;
import java.io.IOException;
/*此檔案使用indata.txt輸入*/

class StringFileIO {

public static void main (String args[]) {

String thisLine;

for (int i=0; i < args.length; i++) {

try {
FileInputStream fin = new FileInputStream(args[i]);
FileOutputStream fout = new FileOutputStream("outdata.txt");

try {
DataInputStream myInput = new DataInputStream(fin);
PrintStream myOutput = new PrintStream(fout);

try {
while ((thisLine = myInput.readLine()) != null) {
System.out.println(thisLine);
myOutput.println(thisLine);
}
}
catch (Exception e) {
System.err.println("Error: " + e);
}
}
catch (Exception e) {
System.err.println("Error: " + e);
}

}
catch (Exception e) {
System.err.println("failed to open file " + args[i]);
System.err.println("Error: " + e);
}
}

}

}
第四題
import java.awt.geom.Point2D;

class ComputeDistance {

public static void main (String args[]) {
double sum;
Point2D.Double p1 = new Point2D.Double(370618.3544, 2782219.88);
Point2D.Double p2 = new Point2D.Double(370829.2355, 2782061.873);
Point2D.Double p3 = new Point2D.Double(371594.2425, 2781484.81);
Point2D.Double p4 = new Point2D.Double(371593.3845, 2782023.718);
Point2D.Double p5 = new Point2D.Double(371759.7823, 2782158.424);

System.out.println("P1到P2的距離: " + p1.distance(p2));
System.out.println("P2到P3的距離: " + p2.distance(p3));
System.out.println("P3到P4的距離: " + p3.distance(p4));
System.out.println("P4到P5的距離: " + p4.distance(p5));

sum = p1.distance(p2) + p2.distance(p3) + p3.distance(p4) + p4.distance(p5);
System.out.println("總距離為: " + sum);


}


}

第五題
import java.io.*;
import java.awt.geom.Point2D;


public class Keyin {
public static void main(String[] args) throws IOException {
BufferedReader keyin;
keyin = new BufferedReader(new InputStreamReader(System.in));
double p1n, p1e, p2n, p2e, p3n, p3e, p4n, p4e, p5n, p5e, sum;
System.out.println("輸入第一點北緯UTM: ");
String n1 = keyin.readLine();
p1n = Double.parseDouble(n1);
System.out.println("輸入第一點東經UTM: ");
String e1 = keyin.readLine();
p1e = Double.parseDouble(e1);
System.out.println("輸入第二點北緯UTM: ");
String n2 = keyin.readLine();
p2n = Double.parseDouble(n2);
System.out.println("輸入第二點東經UTM: ");
String e2 = keyin.readLine();
p2e = Double.parseDouble(e2);
System.out.println("輸入第三點北緯UTM: ");
String n3 = keyin.readLine();
p3n = Double.parseDouble(n3);
System.out.println("輸入第三點東經UTM: ");
String e3 = keyin.readLine();
p3e = Double.parseDouble(e3);
System.out.println("輸入第四點北緯UTM: ");
String n4 = keyin.readLine();
p4n = Double.parseDouble(n4);
System.out.println("輸入第四點東經UTM: ");
String e4 = keyin.readLine();
p4e = Double.parseDouble(e4);
System.out.println("輸入第五點北緯UTM: ");
String n5 = keyin.readLine();
p5n = Double.parseDouble(n5);
System.out.println("輸入第五點東經UTM: ");
String e5 = keyin.readLine();
p5e = Double.parseDouble(e5);


Point2D.Double p1 = new Point2D.Double(p1n, p1e);
Point2D.Double p2 = new Point2D.Double(p2n, p2e);
Point2D.Double p3 = new Point2D.Double(p3n, p3e);
Point2D.Double p4 = new Point2D.Double(p4n, p4e);
Point2D.Double p5 = new Point2D.Double(p5n, p5e);

System.out.println("P1到P2的距離: " + p1.distance(p2));
System.out.println("P2到P3的距離: " + p2.distance(p3));
System.out.println("P3到P4的距離: " + p3.distance(p4));
System.out.println("P4到P5的距離: " + p4.distance(p5));
sum = p1.distance(p2) + p2.distance(p3) + p3.distance(p4) + p4.distance(p5);
System.out.println("五點距離總和: " + sum);

}

}
第六題
import java.io.*;
import java.util.*;
import java.awt.geom.Point2D;
/*此程式使用datain.txt輸入*/


class ComputeDatain {

public static void main (String args[]) {

String thisLine;

for (int i=0; i < args.length; i++) {

try {
FileInputStream fin = new FileInputStream(args[i]);

try {
DataInputStream myInput = new DataInputStream(fin);

try {
while ((thisLine = myInput.readLine()) != null) {
StringTokenizer st = new StringTokenizer(thisLine, " ,");
double p1n, p1e, p2n, p2e, p3n, p3e, p4n, p4e, p5n, p5e, sum;

p1n = Double.parseDouble(st.nextToken());
System.out.println("第一點北緯UTM:" + p1n);
p1e = Double.parseDouble(st.nextToken());
System.out.println("第一點東經UTM:" + p1e);
p2n = Double.parseDouble(st.nextToken());
System.out.println("第二點北緯UTM:" + p2n);
p2e = Double.parseDouble(st.nextToken());
System.out.println("第二點東經UTM:" + p2e);
p3n = Double.parseDouble(st.nextToken());
System.out.println("第三點北緯UTM:" + p3n);
p3e = Double.parseDouble(st.nextToken());
System.out.println("第三點東經UTM:" + p3e);
p4n = Double.parseDouble(st.nextToken());
System.out.println("第四點北緯UTM:" + p4n);
p4e = Double.parseDouble(st.nextToken());
System.out.println("第四點東經UTM:" + p4e);
p5n = Double.parseDouble(st.nextToken());
System.out.println("第五點北緯UTM:" + p5n);
p5e = Double.parseDouble(st.nextToken());
System.out.println("第五點東經UTM:" + p5e);

Point2D.Double p1 = new Point2D.Double(p1n, p1e);
Point2D.Double p2 = new Point2D.Double(p2n, p2e);
Point2D.Double p3 = new Point2D.Double(p3n, p3e);
Point2D.Double p4 = new Point2D.Double(p4n, p4e);
Point2D.Double p5 = new Point2D.Double(p5n, p5e);

System.out.println("P1到P2的距離: " + p1.distance(p2) + "公尺");
System.out.println("P2到P3的距離: " + p2.distance(p3) + "公尺");
System.out.println("P3到P4的距離: " + p3.distance(p4) + "公尺");
System.out.println("P4到P5的距離: " + p4.distance(p5) + "公尺");

sum = p1.distance(p2) + p2.distance(p3) + p3.distance(p4) + p4.distance(p5);
System.out.println("五點距離總和: " + sum + "公尺");

}

}
catch (Exception e) {
System.err.println("Error: " + e);
}
}
catch (Exception e) {
System.err.println("Error: " + e);
}

}
catch (Exception e) {
System.err.println("failed to open file " + args[i]);
System.err.println("Error: " + e);
}
}


}
}
第七題
import java.io.*;
import java.util.*;
import java.awt.geom.Point2D;
/*此程式使用datain.txt輸入*/


class ComputeFootageDatain {

public static void main (String args[]) {

String thisLine;

for (int i=0; i < args.length; i++) {

try {
FileInputStream fin = new FileInputStream(args[i]);

try {
DataInputStream myInput = new DataInputStream(fin);

try {
while ((thisLine = myInput.readLine()) != null) {
StringTokenizer st = new StringTokenizer(thisLine, " ,");
double p1n, p1e, p2n, p2e, p3n, p3e, p4n, p4e, p5n, p5e, sum;

p1n = Double.parseDouble(st.nextToken());
System.out.println("第一點北緯UTM:" + p1n);
p1e = Double.parseDouble(st.nextToken());
System.out.println("第一點東經UTM:" + p1e);
p2n = Double.parseDouble(st.nextToken());
System.out.println("第二點北緯UTM:" + p2n);
p2e = Double.parseDouble(st.nextToken());
System.out.println("第二點東經UTM:" + p2e);
p3n = Double.parseDouble(st.nextToken());
System.out.println("第三點北緯UTM:" + p3n);
p3e = Double.parseDouble(st.nextToken());
System.out.println("第三點東經UTM:" + p3e);
p4n = Double.parseDouble(st.nextToken());
System.out.println("第四點北緯UTM:" + p4n);
p4e = Double.parseDouble(st.nextToken());
System.out.println("第四點東經UTM:" + p4e);
p5n = Double.parseDouble(st.nextToken());
System.out.println("第五點北緯UTM:" + p5n);
p5e = Double.parseDouble(st.nextToken());
System.out.println("第五點東經UTM:" + p5e);

Point2D.Double p1 = new Point2D.Double(p1n, p1e);
Point2D.Double p2 = new Point2D.Double(p2n, p2e);
Point2D.Double p3 = new Point2D.Double(p3n, p3e);
Point2D.Double p4 = new Point2D.Double(p4n, p4e);
Point2D.Double p5 = new Point2D.Double(p5n, p5e);

System.out.println("一英尺=0.3048公尺");
System.out.println("P1到P2的距離: " + p1.distance(p2) + "公尺");
System.out.println("P1到P2的距離: " + p1.distance(p2)/0.3048 + "英尺");
System.out.println("P2到P3的距離: " + p2.distance(p3) + "公尺");
System.out.println("P2到P3的距離: " + p2.distance(p3)/0.3048 + "英尺");
System.out.println("P3到P4的距離: " + p3.distance(p4) + "公尺");
System.out.println("P3到P4的距離: " + p3.distance(p4)/0.3048 + "英尺");
System.out.println("P4到P5的距離: " + p4.distance(p5) + "公尺");
System.out.println("P4到P5的距離: " + p4.distance(p5)/0.3048 + "英尺");

sum = p1.distance(p2) + p2.distance(p3) + p3.distance(p4) + p4.distance(p5);
System.out.println("五點距離總和: " + sum + "公尺");
System.out.println("五點距離總和: " + sum/0.3048 + "英尺");

}

}
catch (Exception e) {
System.err.println("Error: " + e);
}
}
catch (Exception e) {
System.err.println("Error: " + e);
}

}
catch (Exception e) {
System.err.println("failed to open file " + args[i]);
System.err.println("Error: " + e);
}
}


}
}