Java理想温度投票统计:结果显示无法正确累计票数问题
理想温度投票统计:星号累计显示问题
我正在统计不同理想温度的投票数,结果显示有问题——能为每个温度生成单个星号,但没法按投票数累计显示对应数量的星号。直觉是displayData()方法里漏了点简单的东西,但一直没找到。
当前代码
public void displayData() { String dots = ""; System.out.println("------------------ Ideal Temperature Data --------------------"); for (int numTemps = 0; numTemps < tempCounts.length; numTemps++) { if (tempCounts[numTemps] != 0) { dots += "*"; System.out.println(numTemps + " : " + dots); } dots = ""; } System.out.println("---------------------------------------------------------------"); }
当前输出
------------------ Ideal Temperature Data -------------------- 63 : * 65 : * 68 : * 69 : * 70 : * 72 : * 75 : * ---------------------------------------------------------------
期望输出
------------------ Ideal Temperature Data -------------------- 63 : * 65 : ** 68 : ***** 69 : *** 70 : * 72 : *** 75 : ** ---------------------------------------------------------------
问题原因
你现在的逻辑是每个温度只添加1个星号,还在每次循环后把dots重置为空,自然没法生成对应投票数的星号。正确逻辑应该是根据当前温度的投票数,生成对应数量的星号。
修复后的代码
Java 11及以上版本(推荐)
利用String.repeat()方法直接生成对应数量的星号:
public void displayData() { System.out.println("------------------ Ideal Temperature Data --------------------"); for (int numTemps = 0; numTemps < tempCounts.length; numTemps++) { int voteCount = tempCounts[numTemps]; if (voteCount != 0) { String stars = "*".repeat(voteCount); System.out.println(numTemps + " : " + stars); } } System.out.println("---------------------------------------------------------------"); }
Java 11以下版本
如果版本不支持String.repeat(),用循环生成星号:
public void displayData() { System.out.println("------------------ Ideal Temperature Data --------------------"); for (int numTemps = 0; numTemps < tempCounts.length; numTemps++) { int voteCount = tempCounts[numTemps]; if (voteCount != 0) { String stars = ""; for (int i = 0; i < voteCount; i++) { stars += "*"; } System.out.println(numTemps + " : " + stars); } } System.out.println("---------------------------------------------------------------"); }
修复说明
- 先获取当前温度对应的投票数
voteCount - 若投票数不为0,根据
voteCount的数值生成对应数量的星号,而非只添加1个 - 移除了每次循环后重置
dots的操作,改为每个温度单独生成对应星号
内容的提问来源于stack exchange,提问作者Johnny Rinaldo
相关产品推荐
相关产品推荐

