Java入门项目求助:用字符串、循环和if语句实现城市统计程序
解决Cities程序的实现问题
你的现有代码存在几个关键问题:每次输入城市时会覆盖之前的citylist变量,没有保存输入的城市,也没有统计数量和追踪字符数最多的城市。下面是修改后的完整代码,完全使用do-while循环、字符串和if语句实现需求:
package cities; import java.util.Scanner; public class Cities { public static void main(String[] args) { Scanner input = new Scanner(System.in); String currentCity; int cityCount = 0; String longestCity = ""; do { System.out.print("Name of city: "); currentCity = input.next(); // 仅处理非"stop"的输入 if (!currentCity.equals("stop")) { cityCount++; // 计数加1 // 比较当前城市长度与最长城市长度,更新最长城市 if (currentCity.length() > longestCity.length()) { longestCity = currentCity; } } } while (!currentCity.equals("stop")); // 输出结果 System.out.println("已输入的城市数量: " + cityCount); if (cityCount > 0) { System.out.println("字符数最多的城市名称: " + longestCity); } else { System.out.println("没有输入任何城市"); } } }
代码说明:
- 变量初始化:
cityCount:用于统计输入的城市数量,初始值为0。longestCity:用于保存字符数最多的城市名称,初始值为空字符串。
- 循环逻辑:
- 在
do-while循环内,先获取用户输入的城市名。 - 通过
if判断输入不是"stop"时,才进行计数和最长城市的判断。 - 每次输入有效城市时,比较其长度与
longestCity的长度,若更长则更新longestCity。
- 在
- 结果输出:
- 循环结束后,输出城市总数。
- 加入判断如果没有输入任何城市(
cityCount为0),给出提示避免空输出。
这样修改后,程序就能满足持续输入城市直到"stop",并输出统计结果的需求,完全符合你要求的语法限制。
内容的提问来源于stack exchange,提问作者Tristan Day
相关产品推荐
相关产品推荐

