import java.io.File;
import java.util.ArrayList;
import java.util.Scanner;public class Assignment7 { public static void main(String[] args) throws Exception {
Point[] storePoint = new Point[25];
Vector[] storeVector = new Vector[35];
Rectangle[] storeRectangle = new Rectangle[5];
Triangle[] storeTriangle = new Triangle[5];
ArrayList<String> temp = new ArrayList<String>();
String pointFile;
String vectorFile;
String shapeFile;
Scanner scanner = new Scanner(System.in);

System.out.print("Please type in the name of your point file: ");
pointFile = scanner.nextLine();
read(pointFile,temp);
for(int i = 0;i < 25;i++){
String line = temp.get(i);
String[] numbersOfLine = line.split(" ");
int x = Integer.parseInt(numbersOfLine[0]);
int y = Integer.parseInt(numbersOfLine[1]);
storePoint[i] = new Point(x,y);
System.out.println(storePoint[i].getX());
}
temp.clear();

System.out.print("Please type in the name of your Vector file: ");
vectorFile = scanner.nextLine();
read(vectorFile,temp);
for(int i = 0;i < 35;i++){
String line = temp.get(i);
String[] numbersOfLine = line.split(" ");
int begin = Integer.parseInt(numbersOfLine[0]);
int end = Integer.parseInt(numbersOfLine[1]);
storeVector[i] = new Vector(storePoint[begin],storePoint[end]);
System.out.println(storeVector[i].getLength());
}
temp.clear();

System.out.print("Please type in the name of your shape file: ");
shapeFile = scanner.nextLine();
read(shapeFile,temp);
for(int i = 0;i < 5;i++){
String line = temp.get(i);
String[] numbersOfLine = line.split(" ");
int sideA = Integer.parseInt(numbersOfLine[0]);
int sideB = Integer.parseInt(numbersOfLine[1]);
int sideC = Integer.parseInt(numbersOfLine[2]);
int sideD = Integer.parseInt(numbersOfLine[3]);
storeRectangle[i] = new Rectangle(storeVector[sideA],storeVector[sideB],storeVector[sideC],storeVector[sideD]);
System.out.println(storeRectangle[i].getPerimeter());
System.out.println(storeRectangle[i].getArea());
}

for(int i = 5;i < 10;i++) {
String line = temp.get(i);
String[] numbersOfLine = line.split(" ");
int sideA = Integer.parseInt(numbersOfLine[0]);
int sideB = Integer.parseInt(numbersOfLine[1]);
int sideC = Integer.parseInt(numbersOfLine[2]);
storeTriangle[i-5] = new Triangle(storeVector[sideA],storeVector[sideB],storeVector[sideC]);
System.out.println(storeTriangle[i-5].getPerimeter());
System.out.println(storeTriangle[i-5].getArea());
}
}
public static void read(String fileName,ArrayList<String> arrayList) throws Exception {
File inputfile = new File(fileName);
Scanner reader = new Scanner(inputfile);
while(reader.hasNext()){
arrayList.add(reader.nextLine());
}
}
}
这是我写的一个小程序的MAIN部分,就是用我建好的POINT类建立VECTOR,再用VECTOR建立RECTANGLE和TRIANGLE,感觉代码有点繁琐但是又不知道怎么优化,求高人优化一下~~谢谢了!
如果需要我的几个类的代码请留言 我都可以贴出来!

解决方案 »

  1.   

    偶觉得还可以啊 ,不用怎么优化的。如果实在是想让代码可读性更强,建议把那几个功能块分别独立成一个个方法。然后在mian方法中调用它们就可以了。
    这样的话,逻辑性就更突出了
      

  2.   

      
      private void printInfo(String info,Scanner scanner,ArrayList<String> temp,int begin,int end)
            System.out.print(info);
            String pointFile = scanner.nextLine();
            read(pointFile,temp);
            for(int i = begin;i < end;i++){
                String line = temp.get(i);
                String[] numbersOfLine = line.split(" ");
                int x = Integer.parseInt(numbersOfLine[0]);
                int y = Integer.parseInt(numbersOfLine[1]);
                storePoint[i] = new Point(x,y);
                System.out.println(storePoint[i].getX());
            }
            temp.clear();
      }
      这样封装应该还凑合吧。
      

  3.   

    对,就是楼上说的,在for循环那里可以优化!
      

  4.   

    如果实在是想让代码可读性更强,建议把那几个功能块分别独立成一个个方法。然后在mian方法中调用它们就可以了。 
    这样的话,逻辑性就更突出了