MeTY666 2018-12-30 12:49 采纳率: 0%
浏览 343

牵引计算纵断面化简Java程序求化简,搞不明白,能不能求大佬帮忙化简修改,整的和原来的输出界面不一样一些

package bean;//import的是加载进去要引用到的Java包,即要调用的方法

import java.util.ArrayList;

import java.util.List;

import javafx.application.Application;

import javafx.geometry.Pos;

import javafx.scene.Scene;

import javafx.scene.control.Button;

import javafx.scene.control.ComboBox;

import javafx.scene.control.Label;

import javafx.scene.control.TextArea;

import javafx.scene.control.TextField;

import javafx.scene.layout.HBox;

import javafx.scene.layout.Pane;

import javafx.scene.layout.VBox;

import javafx.stage.Stage;

public class View extends Application{
//调用Application包,下面main主方法块launch的功能要调用

public void start(Stage primaryStage){
    Pane Pane = new Pane();//面板
    VBox vBox = new VBox(10); //竖框
    vBox.setAlignment(Pos.CENTER); //居中

    Label topLable = new Label("纵断面化简");//顶端标签
    vBox.getChildren().add(topLable);   //竖框添加顶端标签

    HBox hBox0 = new HBox(30); //横框
    Label titleLable1 = new Label("坡度千分数");//数据名称标签
    Label titleLable2 = new Label("坡长");
    Label titleLable3 = new Label("轨道标高");
    Label titleLable4 = new Label("处理方式(化简为同一坡段的选同一数字)"); 
    titleLable1.setPrefWidth(75);titleLable2.setPrefWidth(75); //调整界面格局
    titleLable3.setPrefWidth(75);titleLable4.setPrefWidth(300);
    hBox0.getChildren().addAll(titleLable1,titleLable2,titleLable3,titleLable4); //横框加title
    vBox.getChildren().add(hBox0); //竖框加title横框


    for(int i = 0;  i<15;i++)//调用静态方法添加15行三个文本域一个组合框的行
        addInput(vBox);     

    Button bt = new Button("化简计算");//触发按钮
    vBox.getChildren().add(bt); //添加触发按钮进竖框

    TextArea ta = new TextArea();//添加文本区域输出结果
    ta.setPrefWidth(200); //调整界面格局
    vBox.getChildren().add(ta); //添加输出文本区域进竖框


    bt.setOnAction(e -> {//写按钮作用
    // 创建一个list集合存放坡段对象
    List<Section> list1 = new ArrayList<>();
    // 定义一个集合用来存放处理方式
    List<String> list2 = new ArrayList<>();
    // 定义一个数组用来存放每行获取的输入数据
    double[] d = new double[3];
    for (int v = 0; v < 15; v++) {
        HBox indexHbox = new HBox();// 获取整个框对象
        indexHbox = (HBox) vBox.getChildren().get(v);// 获取第一行输入框的数据
        for (int h = 0; h < 3; h++) {
            TextField t = new TextField();// 获取输入框对象
            t = (TextField) indexHbox.getChildren().get(h); // 获取该输入框的数据
                ouble i = Double.parseDouble(t.getText());// 将数据转化为double类型
                d[h] = i;// 放入数组中
            }
            // 创建一个坡段对象
            Section section = new Section(d[0], d[1], d[2]);// 取出数组中的数据作为参数构造section对象
            // 将section加入list
            list1.add(section);// 将section对象加入list1

            // 获取处理方式的参数
            ComboBox<String> c = new ComboBox<>();// 获取下拉框对象
            c = (ComboBox<String>) indexHbox.getChildren().get(3);// 得到该行下拉框的值
            list2.add(c.getValue());// 将值存到list2
        }   

    //定义几个集合分别用来放同一化简的坡段
        List<Object> list3 = new ArrayList<>();
        List<Object> list4 = new ArrayList<>();
        List<Object> list5 = new ArrayList<>();
        List<Object> list6 = new ArrayList<>();
        List<Object> list7 = new ArrayList<>();
        List<Object> list8 = new ArrayList<>();
        List<Object> list9 = new ArrayList<>();
        for(int j=0;j<15;j++){
            switch(list2.get(j)){
            case "不进行化简"://如果下拉框选的是"不进行化简"则不进行处理
                break;
            case "1":
                list3.add(list1.get(j));//如果下拉框选的是"1"则添加到list3
                break;
            case "2":
                list4.add(list1.get(j));//如果下拉框选的是"2"则添加到list4
                break;
            case "3":
                list5.add(list1.get(j));//如果下拉框选的是"3"则添加到list5
                break;
            case "4":
                list6.add(list1.get(j));//如果下拉框选的是"4"则添加到list6
                break;
            case "5":
                list7.add(list1.get(j));//如果下拉框选的是"5"则添加到list7
            case "6":
                list8.add(list1.get(j));//如果下拉框选的是"6"则添加到list8
                break;
            case "7":
                list9.add(list1.get(j));//如果下拉框选的是"7"则添加到list9
                break;
            default:break;
            }
        }

        //要化简为同一坡段的几个坡段进行化简
        Calculate calculate = new Calculate();//创建计算对象
        double i_h1 = calculate.getI_h(list3);//调用计算坡度千分数的方法
        double sumL1 = calculate.getsumL(list3);//调用计算总坡长的方法
        double i_h2 = calculate.getI_h(list3);
        double sumL2 = calculate.getsumL(list3);
        double i_h3 = calculate.getI_h(list3);
        double sumL3 = calculate.getsumL(list3);
        double i_h4 = calculate.getI_h(list3);
        double sumL4 = calculate.getsumL(list3);
        double i_h5 = calculate.getI_h(list3);
        double sumL5 = calculate.getsumL(list3);
        //结果输出
        ta.appendText("1的化简结果:坡度千分数:"+i_h1+"\t坡长为:"+sumL1+"\n");
        ta.appendText("2的化简结果:坡度千分数:"+i_h2+"\t坡长为:"+sumL2+"\n");
        ta.appendText("3的化简结果:坡度千分数:"+i_h3+"\t坡长为:"+sumL3+"\n");
        ta.appendText("4的化简结果:坡度千分数:"+i_h4+"\t坡长为:"+sumL4+"\n");
        ta.appendText("5的化简结果:坡度千分数:"+i_h5+"\t坡长为:"+sumL5+"\n");
    });


    Pane.getChildren().add(vBox); //面板添加竖框
    Scene scene = new Scene(Pane); //场景添加面板
    primaryStage.setScene(scene); //界面添加场景
    primaryStage.setTitle("纵断面化简");//界面命标题
    primaryStage.show();//启动界面      
}
public static void addInput(VBox vBox){//静态方法添加一行三个文本域和一个组合框
    HBox hBox1 = new HBox(30);
    TextField tf1_1 = new TextField();
    TextField tf1_2 = new TextField();
    TextField tf1_3 = new TextField();
    tf1_1.setPrefWidth(75);tf1_2.setPrefWidth(75);tf1_3.setPrefWidth(75);
    ComboBox<String> cbo1 = new ComboBox<>();
    cbo1.getItems().addAll("不进行化简","1","2","3","4","5","6","7");//给拉选框添加选项
    hBox1.getChildren().addAll(tf1_1,tf1_2,tf1_3,cbo1);
    vBox.getChildren().add(hBox1);
    }

public static void main(String[] args) {
    // TODO 自动生成的方法存根
    launch(args);//启动界面类
}

}

//坡段类
package bean;

public class Section {
//定义一个坡段类,用于实例化线路上的断面
private double i; //坡度千分数
private double l; //坡长
private double h; //轨道标高

public double getH() {
    return h;
}
public void setH(double h) {
    this.h = h;
}
public Section(double i,double l,double h){
    //坡段构造方法
    super();
    this.i = i;
    this.l = l;
    this.h = h;
}
public double getI() {
    return i;
}
public void setI(double i) {
    this.i = i;
}
public double getL() {
    return l;
}
public void setL(double l) {
    this.l = l;
}
@Override
public String toString() {
    return "Section [i=" + i + ", l=" + l + ", h=" + h + "]";
}

}

//计算类
package bean;

import java.util.ArrayList;
import java.util.List;

public class Calculate {
// 计算化简坡道千分数
public double getI_h(List list1) {
// 得到终点标高h2,始点标高h1
Section lastS = (Section) list1.get(list1.size() - 1);
double h2 = lastS.getH();
Section firstS = (Section) list1.get(0);
double h1 = firstS.getH();
// 获得坡长
double sumL = getsumL(list1);
double I_h = 1000 * (h2 - h1) / sumL;
return I_h;
}
// 计算总坡长
public double getsumL(List list1) {
// 获得坡长
double sumL = 0;
Section s = null;
for (int i = 0; i < list1.size(); i++) {
s = (Section) list1.get(i);
sumL += s.getL();
}
s = (Section)list1.get(0);
return sumL-s.getL();
}
}

  • 写回答

3条回答 默认 最新

  • qq_44119432 2020-12-16 07:58
    关注

    问一下题主有源代码吗 我课设需要

    评论

报告相同问题?

悬赏问题

  • ¥15 R语言Rstudio突然无法启动
  • ¥15 关于#matlab#的问题:提取2个图像的变量作为另外一个图像像元的移动量,计算新的位置创建新的图像并提取第二个图像的变量到新的图像
  • ¥15 改算法,照着压缩包里边,参考其他代码封装的格式 写到main函数里
  • ¥15 用windows做服务的同志有吗
  • ¥60 求一个简单的网页(标签-安全|关键词-上传)
  • ¥35 lstm时间序列共享单车预测,loss值优化,参数优化算法
  • ¥15 Python中的request,如何使用ssr节点,通过代理requests网页。本人在泰国,需要用大陆ip才能玩网页游戏,合法合规。
  • ¥100 为什么这个恒流源电路不能恒流?
  • ¥15 有偿求跨组件数据流路径图
  • ¥15 写一个方法checkPerson,入参实体类Person,出参布尔值