java - 我无法弄清楚为什么我的数组列表没有使用我所说的新值进行更新
问题描述
如果我在问这个问题时犯了任何错误,请告诉我我知道这是一个专业论坛,这是我的第一篇文章。因此,我正在尝试为我的 APCS 高中课程编写代码,但是遇到了问题。仅供参考,这里是我遇到问题的部分代码的说明 -
3.) 创建一个名为 updateLocation 的方法,将国家添加到运行的城市(例如伦敦,英格兰)。打印列表。
我遇到的问题发生在第 3 步中。我已经编写了 updateLocation 方法并为该方法编写了 if 循环,以用 Country 替换已定义的位置,但是,它没有正确输出。
这是我的代码-
import java.util.ArrayList;
public class Runner {
private double time;
private String atheleteName;
private String nationality;
private String date;
private String location;
public Runner(double time, String atheleteName, String nationality, String date, String location) {
this.time = time;
this.atheleteName = atheleteName;
this.nationality = nationality;
this.date = date;
this.location = location;
}
public double getTime() {
return time;
}
public String getAtheleteName() {
return atheleteName;
}
public String getNationality() {
return nationality;
}
public String getDate() {
return date;
}
public String getLocation() {
return location;
}
public void setTime(double time) {
this.time = time;
}
public void setAtheleteName(String atheleteName) {
this.atheleteName = atheleteName;
}
public void setNationality(String nationality) {
this.nationality = nationality;
}
public void setDate(String date) {
this.date = date;
}
public void setLocation(String location) {
this.location = location;
}
public String toString() {
return
time + atheleteName + nationality + date + location;
}
public static void main(String[] args) {
ArrayList<Runner> runners = new ArrayList<>();
runners.add(new Runner( 9.58," Usain Bolt "," Jamaica "," 16 August 2009 "," Berlin "));
runners.add(new Runner( 9.69," Tyson Gray "," USA "," 20 September 2009 "," Shanghai "));
runners.add(new Runner( 9.69," Yohan Blake "," Jamaica "," 23 August 2012 "," Lausanne"));
runners.add(new Runner( 9.72," Asafa Powell "," Jamaica "," 02 September 2008 "," Lausanne "));
runners.add(new Runner( 9.78," Nesta Carter "," Jamaica "," 29 August 2010 "," Rieti "));
runners.add(new Runner( 9.79," Maurice Greene "," USA "," 16 June 1999 "," Athens "));
runners.add(new Runner( 9.79," Justin Gatlin "," USA "," 05 August 2012 "," London "));
runners.add(new Runner( 9.80," Steve Mullings "," Jamaica "," 04 June 2011 "," Eugene "));
runners.add(new Runner( 9.84," Donovan Bailey "," Canada "," 27 July 1996 "," Atlanta "));
runners.add(new Runner(9.84," Bruny Surin "," Canada "," 22 August 1999 "," Seville "));
System.out.println("\nOriginal Array- ");
System.out.println("");
System.out.println("Time(sec): Name: Nationality: Date: Location:");
System.out.println("---------------------------------------------------------------------------");
printRunners(runners);
updateLocation(runners);
System.out.println("\nUpdate Runners- ");
System.out.println("");
System.out.println("Time(sec): Name: Nationality: Date: Location:");
System.out.println("---------------------------------------------------------------------------");
printRunners(runners);
insertName(runners,10.49," Florence (G.) Joyner ","USA "," 06 July 1988 "," Indianapolis, Indiana ");
System.out.println("\nUpdate Runners- ");
System.out.println("");
System.out.println("Time(sec): Name: Nationality: Date: Location:");
System.out.println("---------------------------------------------------------------------------");
printRunners(runners);
replaceName(runners," Bruny Surin "," Carl Lewis ", 9.86 ," USA "," 23 August 1991 "," Tokyo, Japan ");
System.out.println("\nUpdate Runners- ");
System.out.println("");
System.out.println("Time(sec): Name: Nationality: Date: Location:");
System.out.println("---------------------------------------------------------------------------");
printRunners(runners);
}
public static void printRunners(ArrayList<Runner> runners){
for(Runner runner:runners)
System.out.println(runner);
}
public static void updateLocation(ArrayList<Runner> runners){
for(Runner runner : runners){
if(runner.getLocation().equalsIgnoreCase("Berlin")){
runner.setLocation("Berlin, Germany");
}else if(runner.getLocation().equalsIgnoreCase("Shanghai")){
runner.setLocation("Shanghai, China");
}else if(runner.getLocation().equalsIgnoreCase("London")){
runner.setLocation("London, England");
}else if(runner.getLocation().equalsIgnoreCase("Athens")){
runner.setLocation("Athens, Greece");
} else if(runner.getLocation().equalsIgnoreCase("Eugene")){
runner.setLocation("Eugene, South Africa");
} else if(runner.getLocation().equalsIgnoreCase("Seville")){
runner.setLocation("Seville, France");
}else if(runner.getLocation().equalsIgnoreCase("Lausanne")){
runner.setLocation("Lausanne, Spain");
}else if(runner.getLocation().equalsIgnoreCase("Rieti")){
runner.setLocation("Rieti, Australia");
}else if(runner.getLocation().equalsIgnoreCase("Atlanta")){
runner.setLocation("Atlanta, USA");
}
}
}
public static void insertName(ArrayList<Runner> runners, double time, String atheleteName, String nationality, String date, String location){
Runner runner = new Runner(time,atheleteName,nationality,date,location);
runners.add(runner);
}
public static void replaceName(ArrayList<Runner> runners, String searchName, String replaceName, double time, String nationality, String date, String location){
for(Runner runner: runners){
if(runner.getAtheleteName().equalsIgnoreCase(searchName)){
runner.setTime(time);
runner.setAtheleteName(replaceName);
runner.setNationality(nationality);
runner.setDate(date);
runner.setLocation(location);
}
}
}
}
我希望我的结果是——
时间(秒): 姓名: 国籍: 日期: 地点:
9.58 Usain Bolt 牙买加 2009 年 8 月 16 日,德国柏林
9.69 Tyson Gray 美国 2009 年 9 月 20 日 中国上海
9.69 Yohan Blake 牙买加 2012 年 8 月 23 日 西班牙洛桑
9.72 Asafa Powell 牙买加 2008 年 9 月 2 日 西班牙洛桑
9.78 Nesta Carter 牙买加 2010 年 8 月 29 日 Rieti,澳大利亚
9.79 Maurice Greene 美国 1999 年 6 月 16 日,希腊雅典
9.79 Justin Gatlin 美国 2012 年 8 月 5 日 英国伦敦
9.8 Steve Mullings 牙买加 2011 年 6 月 4 日 南非尤金
9.84 Donovan Bailey 加拿大 1996 年 7 月 27 日 美国亚特兰大
9.84 Bruny Surin 加拿大 1999 年 8 月 22 日 法国塞维利亚
................................... ...................................但是,我的输出看起来像这样-
时间(秒): 姓名: 国籍: 日期: 地点:
9.58 Usain Bolt 牙买加 2009 年 8 月 16 日柏林
9.69 Tyson Gray 美国 2009 年 9 月 20 日 上海
9.69 Yohan Blake 牙买加 2012 年 8 月 23 日 洛桑
9.72 Asafa Powell 牙买加 2008 年 9 月 2 日 洛桑
9.78 Nesta Carter 牙买加 2010 年 8 月 29 日 Rieti
9.79 Maurice Greene 美国 1999 年 6 月 16 日,雅典
9.79 Justin Gatlin 美国 2012 年 8 月 5 日 伦敦
9.8 Steve Mullings 牙买加 2011 年 6 月 4 日尤金
9.84 Donovan Bailey 加拿大 1996 年 7 月 27 日亚特兰大
9.84 Bruny Surin 加拿大 1999 年 8 月 22 日 塞维利亚
如果您对代码有任何疑问,请告诉我。
解决方案
字符串" Berlin "
和"Berlin"
不相等(即使您忽略大小写比较它们。第一个包含前导和尾随空格。删除它们或替换runner.getLocation()
为runner.getLocation().trim()
.
推荐阅读
- laravel - Laravel Sanctum SPA 验证不同的用户表
- azure - 如何从 Microsoft Azure 转出域?
- excel - 如何使用 VBA 更新循环内的范围
- java - 如何使用 Spring Kafka 保证 Kafka 主题配置
- vue.js - 在 Nuxt.js 中重新访问页面时如何不重新渲染组件?
- python - 错误:即使安装了请求,也没有名为请求的模块
- c++ - 如何在 C++ 中添加到数组文本文件?
- python - 根据数据框另一列值计数的数据框列到 2d numpy 数组
- list - 批处理将列出文件夹中的文件,问我是哪一个,当我选择它时会打开它
- python - Python:在 1 秒内运行 N 次函数