精密星历Lagrange插值法java实现

  • 格式:docx
  • 大小:204.79 KB
  • 文档页数:10
while((tempString=reader.readLine()) !=null) {
// 显示行号
if(j<96){
Stringm=tempString.substring(1,4).trim();
if(m.equals(numb)){
Stringss1=tempString.substring(4,18).trim();
intday=1;
inthour=0;
intminute=0;
doublesecond=0;
Time(){
}
}
classSATELITE{
doubleXcoord;
doubleYcoord;
doubleZcoord;
SATELITE(){
}
}
实现效果
测试用例
输入
有效等价类
无效等价类
卫星编号
G01
G500
time.hour=x1.nextInt();
if(time.hour<0 ||time.hour>24){
System.out.println("输入错误,请重新输入:");
time.hour=x1.nextInt();
}
System.out.println("请输入要插入的点的分:");
time.minute=x1.nextInt();
j++;
}
}
if(line==3){
Strings=tempString.substring(4,6).trim();
n= Integer.parseInt(s);
//System.out.println(n);
}
if((line==23 +i*(n+1)) &&i<96){
s1=tempString.substring(3,7).trim();
time1[4][i] = Integer.parseInt(s5);
//System.out.println(time1[4][i]); // 读取分
Strings6=tempString.substring(20,22).trim();
time2[i] = Double.parseDouble(s6);
插入的小时
1 - 24
30
插入的分钟
0 - 60
100
文件名
C:\Users\Administrator\Desktop\igs15645.sp3
igs15645.txt
publicclassLagrange {
publicstaticvoidmain(String[]args)throwsIOException {
Scannersc=newScanner(System.in);
System.out.println("请输入文件名:");
StringfileName=sc.nextLine();
//System.out.println(satelite[1][j]); //读取所需Y坐标
Stringss3=tempString.substring(33,47).trim();
satelite[2][j] = Double.parseDouble(ss3);
//System.out.println(satelite[2][j]); //读取所需Y坐标
System.out.println(time.hour+"时"+time.minute+
"分"+numb+"卫星的Y坐标为:"+Lagrange(time11,satelite2,h));
System.out.println(time.hour+"时"+time.minute+
"分"+numb+"卫星的Z坐标为:"+Lagrange(time11,satelite3,h));
Lagrange算法
程序设计
专业:测绘工程
班级:1班
姓名:陈斯铭
语言:java
实现代码
importjava.io.BufferedReader;
importjava.io.File;
importjava.io.FileReader;
importjava.io.IOException;
importjava.util.Scanner;
if(time.hour==time1[3][i] &&time.minute>=time1[4][i] &&time.minute<time1[4][i+1]){
for(k=0;k<9;k++){
if(i<4){
satelite1[k] =satelite[0][k];
satelite2[k] =satelite[1][k];
readFileByLines(fileName);
}
publicstaticdoubleLagrange(int[]X,double[]Y,intX0){
inta,b;
doublet,u;
t= 0;
for(a= 0;a<9;a++){
u= 1;
for(b= 0;b<9;b++){
if(b!=a){
intline= 1;
inti=0,n= 0,j=0,k=0,h=0;
Scannerinput=newScanner(System.in);
System.out.println("需要读取卫星的编号:");
Stringnumb=input.nextLine();
// 一次读入一行,直到读入null为文件结束
satelite3[k] =satelite[2][i-4+k];
//System.out.println(satelite1[k]);
time11[k] = (i-4+k)*15*60;
}
}
}
}
System.out.println(time.hour+"时"+time.minute+
"分"+numb+"卫星的X坐标为:"+Lagrange(time11,satelite1,h));
satelite[0][j] = Double.parseDouble(ss1);
//System.out.println(satelite[0pString.substring(19,33).trim();
satelite[1][j] = Double.parseDouble(ss2);
time1[0][i] = Integer.parseInt(s1);
//System.out.println(time1[0][i]); // 读取年
Strings2=tempString.substring(8,10).trim();
time1[1][i] = Integer.parseInt(s2);
satelite3[k] =satelite[2][k];
//System.out.println(satelite1[k]);
time11[k] =k*15*60;
}
elseif(i>91){
satelite1[k] =satelite[0][87+k];
satelite2[k] =satelite[1][87+k];
//System.out.println(time2[i]); // 读取秒
i++;
}
line++;
}
reader.close();
Scannerx1=newScanner(System.in);
Timetime=newTime();
System.out.println("请输入要插入的点的时:");
u=u*(X0-X[b])/(X[a]-X[b]);
}
}
u=u*Y[a];
t=t+u;
}
returnt;
}
publicstaticvoidreadFileByLines(StringfileName) {
Filefile=newFile(fileName);
BufferedReaderreader=null;
try{
System.out.println("以行为单位读取文件内容,一次读一整行:");
reader=newBufferedReader(newFileReader(file));
int[][]time1=newint[5][96];
int[]time11=newint[9];
double[][]satelite=newdouble[3][96];
if(time.minute< 0 ||time.minute> 60){
System.out.println("输入错误,请重新输入:");
time.minute=x1.nextInt();
}
h=time.hour* 3600 +time.minute* 60;
for(i=0;i<96;i++){
satelite3[k] =satelite[2][87+k];