学习进度条3.14

news/2025/3/14 18:41:04/文章来源:https://www.cnblogs.com/dynastyeast/p/18772656

所花时间:6小时
代码量:300
搏客量:2
了解到的知识点:
1.今日做了一个简单的as项目,用于计算地铁票价
`package com.example.myapplication;

import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;
import android.widget.Toast;
import androidx.appcompat.app.AppCompatActivity;
import java.util.HashMap;
import java.util.Map;

public class MainActivity extends AppCompatActivity {

private EditText startStation, endStation, ticketQuantity;
private TextView resultText;
private Button calculateButton, payButton;// 地铁线路数据
private Map<String, Integer> line1 = new HashMap<>();
private Map<String, Integer> line2 = new HashMap<>();
private Map<String, Integer> line3 = new HashMap<>();@Override
protected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);// 初始化UI组件startStation = findViewById(R.id.startStation);endStation = findViewById(R.id.endStation);ticketQuantity = findViewById(R.id.ticketQuantity);resultText = findViewById(R.id.resultText);calculateButton = findViewById(R.id.calculateButton);payButton = findViewById(R.id.payButton);// 初始化地铁线路数据initializeSubwayLines();// 计算费用按钮点击事件calculateButton.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {calculateFare();}});// 缴费按钮点击事件payButton.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {payFare();}});
}// 初始化地铁线路数据
private void initializeSubwayLines() {// 1号线line1.put("福泽", 1);line1.put("园博园", 2);line1.put("商务中心", 3);line1.put("会展中心", 4);line1.put("东庄", 5);line1.put("西庄", 6);line1.put("洨河大道", 7);line1.put("南村", 8);line1.put("石家庄东站", 9);line1.put("火炬广场", 10);line1.put("留村", 11);line1.put("白佛", 12);line1.put("朝晖桥", 13);line1.put("谈固", 14);line1.put("北宋", 15);line1.put("体育场", 16);line1.put("博物院", 17);line1.put("北国商城", 18);line1.put("平安大街", 19);line1.put("解放广场", 20);line1.put("新百广场", 21);line1.put("烈士陵园", 22);line1.put("和平医院", 23);line1.put("长城桥", 24);line1.put("时光街", 25);line1.put("西王", 26);// 2号线line2.put("柳辛庄", 1);line2.put("铁道大学", 2);line2.put("义堂", 3);line2.put("建和桥", 4);line2.put("长安公园", 5);line2.put("北国商城", 6);line2.put("裕华路", 7);line2.put("槐中路", 8);line2.put("欧韵公园", 9);line2.put("元村", 10);line2.put("石家庄", 11);line2.put("塔坛", 12);line2.put("仓丰路留村", 13);line2.put("南位", 14);line2.put("嘉华路", 15);// 3号线line3.put("乐乡", 1);line3.put("太行南大街", 2);line3.put("南豆", 3);line3.put("中仰陵", 4);line3.put("西仰陵", 5);line3.put("东二环南路", 6);line3.put("位同", 7);line3.put("南王", 8);line3.put("东王", 9);line3.put("塔冢", 10);line3.put("孙村", 11);line3.put("汇通路", 12);line3.put("石家庄", 13);line3.put("西三教", 14);line3.put("槐安桥", 15);line3.put("东里", 16);line3.put("新百广场", 17);line3.put("市二中", 18);line3.put("市庄", 19);line3.put("柏林庄", 20);line3.put("高柱", 21);line3.put("西三庄", 22);
}// 计算地铁费用
private void calculateFare() {String start = startStation.getText().toString();String end = endStation.getText().toString();String quantityStr = ticketQuantity.getText().toString();if (start.isEmpty() || end.isEmpty() || quantityStr.isEmpty()) {Toast.makeText(this, "请输入起点、终点和购票数量", Toast.LENGTH_SHORT).show();return;}int quantity = Integer.parseInt(quantityStr);if (quantity <= 0) {Toast.makeText(this, "购票数量必须大于0", Toast.LENGTH_SHORT).show();return;}int startIndex = getStationIndex(start);int endIndex = getStationIndex(end);if (startIndex == -1 || endIndex == -1) {Toast.makeText(this, "输入的站点不存在", Toast.LENGTH_SHORT).show();return;}int distance = Math.abs(endIndex - startIndex);int farePerTicket = calculateFareBasedOnDistance(distance);int totalFare = farePerTicket * quantity;resultText.setText("费用:" + totalFare + "元");
}// 根据站点名称获取索引
private int getStationIndex(String station) {if (line1.containsKey(station)) {return line1.get(station);} else if (line2.containsKey(station)) {return line2.get(station);} else if (line3.containsKey(station)) {return line3.get(station);}return -1;
}// 根据距离计算费用
private int calculateFareBasedOnDistance(int distance) {if (distance <= 3) {return 1;} else {return 1+distance/3;}
}// 缴费按钮点击事件
private void payFare() {String fare = resultText.getText().toString();if (fare.equals("费用:0元")) {Toast.makeText(this, "请先计算费用", Toast.LENGTH_SHORT).show();} else {Toast.makeText(this, "缴费成功:" + fare, Toast.LENGTH_SHORT).show();}
}

<!-- 起点输入框 -->
<com.google.android.material.textfield.TextInputLayoutandroid:id="@+id/startStationLayout"style="@style/Widget.MaterialComponents.TextInputLayout.OutlinedBox"android:layout_width="match_parent"android:layout_height="wrap_content"android:hint="起点站"app:boxStrokeColor="@color/purple_500"app:boxStrokeWidth="1dp"app:boxStrokeWidthFocused="2dp"android:layout_marginBottom="16dp"><com.google.android.material.textfield.TextInputEditTextandroid:id="@+id/startStation"android:layout_width="match_parent"android:layout_height="wrap_content"android:inputType="text"android:textColor="@color/black"android:textColorHint="@color/gray_500" />
</com.google.android.material.textfield.TextInputLayout><!-- 终点输入框 -->
<com.google.android.material.textfield.TextInputLayoutandroid:id="@+id/endStationLayout"style="@style/Widget.MaterialComponents.TextInputLayout.OutlinedBox"android:layout_width="match_parent"android:layout_height="wrap_content"android:hint="终点站"app:boxStrokeColor="@color/purple_500"app:boxStrokeWidth="1dp"app:boxStrokeWidthFocused="2dp"android:layout_marginBottom="16dp"><com.google.android.material.textfield.TextInputEditTextandroid:id="@+id/endStation"android:layout_width="match_parent"android:layout_height="wrap_content"android:inputType="text"android:textColor="@color/black"android:textColorHint="@color/gray_500" />
</com.google.android.material.textfield.TextInputLayout><!-- 购票数量输入框 -->
<com.google.android.material.textfield.TextInputLayoutandroid:id="@+id/ticketQuantityLayout"style="@style/Widget.MaterialComponents.TextInputLayout.OutlinedBox"android:layout_width="match_parent"android:layout_height="wrap_content"android:hint="购票数量"app:boxStrokeColor="@color/purple_500"app:boxStrokeWidth="1dp"app:boxStrokeWidthFocused="2dp"android:layout_marginBottom="24dp"><com.google.android.material.textfield.TextInputEditTextandroid:id="@+id/ticketQuantity"android:layout_width="match_parent"android:layout_height="wrap_content"android:inputType="number"android:textColor="@color/black"android:textColorHint="@color/gray_500" />
</com.google.android.material.textfield.TextInputLayout><!-- 计算费用按钮 -->
<com.google.android.material.button.MaterialButtonandroid:id="@+id/calculateButton"android:layout_width="match_parent"android:layout_height="wrap_content"android:text="计算费用"android:textColor="@color/white"android:backgroundTint="@color/purple_500"android:layout_marginBottom="16dp"app:iconTint="@color/white"app:iconPadding="8dp"app:cornerRadius="8dp"android:elevation="4dp" /><!-- 显示费用结果 -->
<androidx.cardview.widget.CardViewandroid:layout_width="match_parent"android:layout_height="wrap_content"app:cardBackgroundColor="@color/purple_100"app:cardCornerRadius="8dp"app:cardElevation="4dp"android:layout_marginBottom="16dp"><TextViewandroid:id="@+id/resultText"android:layout_width="match_parent"android:layout_height="wrap_content"android:text="费用:0元"android:textSize="18sp"android:textColor="@color/purple_800"android:gravity="center"android:padding="16dp" />
</androidx.cardview.widget.CardView><!-- 缴费按钮 -->
<com.google.android.material.button.MaterialButtonandroid:id="@+id/payButton"android:layout_width="match_parent"android:layout_height="wrap_content"android:text="缴费"android:textColor="@color/white"android:backgroundTint="@color/purple_500"app:iconTint="@color/white"app:iconPadding="8dp"app:cornerRadius="8dp"android:elevation="4dp" />

`

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/898799.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

根据前序遍历和后序遍历计数二叉树

我们知道,对于一个二叉树,如果我们我们知道他的前(或后)序遍历和中序遍历,那就可以直接构造还原出完整的二叉树。中序遍历很重要。 那么给定一个树的前序遍历和后序遍历,能不能构造出这个树呢?一般是不行的,参考往期文章 https://www.cnblogs.com/ofnoname/p/16864200.…

使用Micrometer与prometheus集成监控jvm

1.简介Micrometer 是一个用于收集和报告指标的 Java 库,广泛用于 Spring Boot 和其他 Java 应用。它提供了对系统各项资源的监控支持,包括但不限于 JVM、内存、垃圾回收、线程池、HTTP 请求 等。Micrometer 支持与多种监控系统的集成,例如 Prometheus、InfluxDB、Datadog 等…

3.14 二重积分

1 1.1 概念引入1.2 分、匀、和、均 分割:把XOY平面分割成若干个小区域,相应的,把柱体分割成n个小的曲顶柱体 取近似:取某一小块的一个点,通过函数关系确定此点的高,体积就等于此处的面积*高 作和:把每一小块的体积加起来,作为曲顶柱体的体积 取极限:设λ,λ趋近于0,…

Livox MID-70连接及使用

一、Livox MID-70连接及使用 参考链接 1.ubuntu18.04安装下载 2.Ros下载 3.Livox_viewer下载 去官网下载livox_viewer,Windows和Linux版本都有。livox_viewer不需要SDK和ros_driver即可使用。 Ps:这里我们选择livox viewer1,不要选择版本2,否则可能面临一个硬件和驱动跟不上…

使用C#创建一个MCP客户端

前言 网上使用Python创建一个MCP客户端的教程已经有很多了,而使用C#创建一个MCP客户端的教程还很少。 为什么要创建一个MCP客户端呢? 创建了一个MCP客户端之后,你就可以使用别人写好的一些MCP服务了。 效果展示 为了方便大家复现,我没有使用WPF/Avalonia之类的做界面。只是…

Maven JavaFX使用SCSS样式表

原理 JavaFX本身的CSS解析器不支持SCSS,因此我们需要在编译阶段将SCSS文件编译为CSS文件,然后在JavaFX中引入CSS文件。 本文使用的编译插件是sass-cli-maven-plugin。 使用 POM文件设置 代码如下: <build><plugins><plugin><groupId>us.hebi.sass&l…

linux中如何判断一个rpm是手动安装还是通过yum安装的

现状 对于一个不熟悉的服务器或者是虽然是自己的服务器,但历史比较久远,对于上面安装了的一些软件包,我们记忆都慢慢模糊了。 我今天遇到一个情况,在安装一个工具x2openEuler时,安装失败,提示依赖冲突: [root@VM-0-6-centos x2openeuler]# yum install x2openEuler-core…

如何让你的应用在市场中脱颖而出?

开发者在完成应用开发并成功上架应用市场后,将面临一项重要挑战:如何在竞争激烈的环境中脱颖而出,吸引用户的关注?为此,提升应用的曝光度和下载量至关重要。 HarmonyOS SDK应用市场服务(Store Kit)提供应用市场业务的对外开放能力,针对想要获得曝光的应用,Store Kit提…

阿里通义实验室语音团队负责人鄢志杰离职;苹果计划在 AirPods 上配备实时对话翻译功能丨日报

开发者朋友们大家好:这里是 「RTE 开发者日报」 ,每天和大家一起看新闻、聊八卦。我们的社区编辑团队会整理分享 RTE(Real-Time Engagement) 领域内「有话题的 技术 」、「有亮点的 产品 」、「有思考的 文章 」、「有态度的 观点 」、「有看点的 活动 」,但内容仅代表编辑…

OP90-1工作原理

step1.压紧弹簧及产品 上下气缸压紧弹簧,产品压紧气缸压紧产品step2.弹簧钩下降 拉簧钩紧气缸伸出,带动弹簧钩下降step3.弹簧钩带动弹簧转动,下弹簧脚进槽step4.弹簧钩提起step5.弹簧钩旋转,带动弹簧越过高处,到达卡槽正上方step6.弹簧钩下降step.弹簧钩回退撤出 弹簧钩回…

Java的volatile和sychronized底层实现

1. 概览 从Java代码级别到硬件级别各层都是如何实现的2. Synchronized 2.1 字节码层面 使用javap -verbose <class文件>可以查看到字节码信息,其中synchronized方法会有flags:ACC_SYNCHRONIZED,此时字节码中不会包含monitorenter和moniotrexit,JVM会自动加 public syn…

信息资源管理文字题之“服务支持类的五大运营流程图”

一、为了充分利用ERP信息系统资源,LX集团采用了各种先进的信息系统管理理念和方法,包括IT服务管理,下图为LX集团IT服务管理中服务支持类的五大运营流程图 要求:将图中标有序号的空白处的正确能容,按序号填写 二、答案变更请求 最终软件库 配置管理数据库 影响分析 授权 变…