定义了两个类,在Subway类中定义三个私有数据变量,线路号,经过站点,换乘站。以及4个方法分别实现从txt文件中导入线路信息;输出线路信息;查询两个站点经过站点数,并输出经过站点以及在某站换乘几号线;计算票价。在SubwayManger中打印界面并根据用户选择调用相关的函数。
Subway:
1 package subway;
2 import java.util.*;
3 import java.io.*;
4 import java.math.*;
5 class Subway {
6 private String num;//存放线路号
7 private String[] str=new String[21];//存放站点名称
8 private String str1;//存放换乘站点信息
9 public Subway() {
10 num="0";
11 for(int j=0;j<21;j++) {
12 str[j]=" ";
13 }
14 str1="新百广场";
15 }
16 public void get() {//输出线路信息
17 System.out.print(num+"号线:");
18 for(int i=0;str[i]!=" ";i++) {
19 System.out.print("站点"+(i+1)+":"+str[i]+";");
20 }
21 System.out.println();
22 }
23 public int chaxun(String t1,String t2,Subway s1,Subway s2) {//查询两个站点间的经过站点
24 int k,k1=0,k2=0;
25 boolean bo1=false;
26 boolean bo2=false;
27 List list1=Arrays.asList(s1.str);
28 List list2=Arrays.asList(s2.str);
29 if(list1.contains(t1)&&list1.contains(t2)) {
30 k1=list1.indexOf(t1);
31 k2=list1.indexOf(t2);
32 k=Math.abs(k1-k2);
33 System.out.println("经过"+k+"站");
34 if(k1
35 while(k1<=k2) {
36 System.out.println(s1.str[k1]);
37 ++k1;
38 }
39 }
40 if(k1>k2) {
41 while(k1>=k2) {
42 System.out.println(s1.str[k1]);
43 --k1;
44 }
45 }
46 return k;
47 }//end if1
48 if(list2.contains(t1)&&list2.contains(t2)) {
49 k1=list2.indexOf(t1);
50 k2=list2.indexOf(t2);
51 k=Math.abs(k1-k2);
52 System.out.println("经过"+k+"站");
53 if(k1
54 while(k1<=k2) {
55 System.out.println(s2.str[k1]);
56 ++k1;
57 }
58 }
59 if(k1>k2) {
60 while(k1>=k2) {
61 System.out.println(s2.str[k1]);
62 --k1;
63 }
64 }
65 return k;
66 }//end if2
67 else {
68 int k3=0,k4=0;
69 if(list1.contains(t1)) {
70 k1=list1.indexOf(t1);
71 k3=Math.abs(k1-14);
72 bo1=true;
73 }
74 if(list1.contains(t2)) {
75 k2=list1.indexOf(t2);
76 k4=Math.abs(k2-14);
77
78 }
79 if(list2.contains(t1)) {
80 k1=list2.indexOf(t1);
81 k3=Math.abs(k1-1);
82 bo2=true;
83 }
84 if(list2.contains(t2)) {
85 k2=list1.indexOf(t2);
86 k4=Math.abs(k1-1);
87 }
88 k=k3+k4;
89 System.out.println("经过"+k+"站");
90 if(bo1==true) {
91 if(k1>14) {
92 while(k1>=14) {
93 System.out.println(s1.str[k1]);
94 --k1;
95 }
96 System.out.println("转乘3号线");
97 }
98 else if(k1<14) {
99 while(k1<=14) {
100 System.out.println(s1.str[k1]);
101 ++k1;
102 }
103 System.out.println("转乘3号线");
104 }
105 int i=1;
106 if(k2>i) {
107 while(i
108 System.out.println(s2.str[i+1]);
109 ++i;
110 }
111 }
112 else if(k2
113 while(i>k2) {
114 System.out.println(s2.str[i-1]);
115 --i;
116 }
117 }
118
119 }//end if1
120 else if(bo2==true) {
121 if(k1>1) {
122 while(k1>=1) {
123 System.out.println(s2.str[k1]);
124 --k1;
125 }
126 System.out.println("转乘1号线");
127 }
128 else if(k1<1) {
129 while(k1<=1) {
130 System.out.println(s2.str[k1]);
131 ++k1;
132 }
133 System.out.println("转乘1号线");
134 }
135 int i=14;
136 if(k2>i) {
137 while(i
138 System.out.println(s1.str[i+1]);
139 ++i;
140 }
141 }
142 else if(k2
143 while(i>k2) {
144 System.out.println(s1.str[i-1]);
145 --i;
146 }
147 }
148 }//end if2
149
150
151
152 return k;
153 }//end else
154 }
155 public void goupiao(int k,int q) {//计算票价
156 int x=1,k3=1,k4=1;
157 k3=k/3;
158 k4=k-k3*3;
159 if(k4==0) {
160 x=k3;
161 }
162 else {
163 x=(k3+1);
164 }
165
166 System.out.println("购票单价:"+x);
167 System.out.println("购票总价:"+x*q);
168 }
169 public void readFile(Subway s1,Subway s2) {
170
171 try {
172 BufferedReader br = new BufferedReader(new InputStreamReader(new FileInputStream("shijiazhuang-subway.txt"),"UTF-8"));
173 s1.num=br.readLine();
174 String line;
175 while ((line = br.readLine()) != null) {
176 int i=0;
177 String [] arr = line.split("\\s+");
178 for(String ss : arr){
179 s1.str[i]=ss;
180 i++;
181 }
182 break;
183 }//end while
184 while ((line = br.readLine()) != null) {
185 s1.str1=line;
186 break;
187 }
188 while ((line = br.readLine()) != null) {
189 s2.num=line;
190 break;
191 }
192
193
194 while ((line = br.readLine()) != null) {
195 int i=0;
196 String [] arr = line.split("\\s+");
197 for(String ss : arr){
198 s2.str[i]=ss;
199 i++;
200 }
201 break;
202 }//end while
203 while ((line = br.readLine()) != null) {
204 s2.str1=br.readLine();
205 break;
206 }
207
208
209
210 }//end try
211 catch (IOException e){
212 e.printStackTrace();
213 }
214
215 }//end readFile
216
217
218
219
220
221 }
SubwayManger:
1 package subway;
2 import java.io.BufferedReader;
3 import java.io.FileInputStream;
4 import java.io.IOException;
5 import java.io.InputStreamReader;
6 import java.util.Scanner;
7 public class SubwayManger {
8
9 public static void main(String[] args) {
10 Subway s1=new Subway();
11 Subway s2=new Subway();
12 Scanner sca=new Scanner(System.in);
13 int n;
14 s1.readFile(s1, s2);
15 System.out.println("***************************************************************");
16 System.out.println(" 欢迎乘坐石家庄地铁");
17 System.out.println("***************************************************************");
18 System.out.println(" 1、显示具体线路信息");
19 System.out.println(" 2、购票");
20 System.out.println("***************************************************************");
21 n=sca.nextInt();
22 if(n==1) {
23 System.out.print("请输入需要查询的线路(1:一号线,3:三号线,0:全部线路)");
24 int n1=sca.nextInt();
25 if(n1==1) {
26 System.out.println("***************************************************************");
27 System.out.println(" 石家庄地铁线路图");
28 System.out.println("***************************************************************");
29 s1.get();
30 System.out.println("***************************************************************");
31 }
32 if(n1==3) {
33 System.out.println("***************************************************************");
34 System.out.println(" 石家庄地铁线路图");
35 System.out.println("***************************************************************");
36 s2.get();
37 System.out.println("***************************************************************");
38 }
39 if(n1==0) {
40 System.out.println("***************************************************************");
41 System.out.println(" 石家庄地铁线路图");
42 System.out.println("***************************************************************");
43 s1.get();
44 s2.get();
45 System.out.println("***************************************************************");
46 }
47 }//end n=1
48 if(n==2) {
49 String t1,t2;
50 int q=1,q1=0,k=0;
51 System.out.println("***************************************************************");
52 System.out.println(" 欢迎乘坐石家庄地铁");
53 System.out.println("***************************************************************");
54 System.out.println("请输入起始地:");
55 t1=sca.next();
56 System.out.println("请输入目的地:");
57 t2=sca.next();
58 System.out.println("请输入购票数:");
59 q=sca.nextInt();
60 k=s1.chaxun(t1, t2, s1, s2);
61 s1.goupiao(k, q);
62 }//end n=2
63 }//end main
64
65 }//end SubwayManger
标签:while,Java,s1,购票,System,k1,地铁,println,out
来源: https://www.cnblogs.com/wyppaa/p/11614824.html