新学生想在这里学习java。遇到了一个关于数组的问题,我一生都无法解决这个问题。问题的最终目标是输出一个一维整数数组(其大小由用户指定),并将数字转换为星号。
例如,输出应如下所示:
中国**** 古巴**(作为新线路) 关岛*****(作为新线)
字符串名称也存储在单独的数组中。
这是我所拥有的:
String[] countryList = new String[country];
int[] numVisits = new int[country];
System.out.println("Here is another look of your data:");
StringBuilder asteriskConvert = new StringBuilder();
for (int index = 0; index < countryList.length; index++)
{
System.out.println(countryList[index] + " " + asteriskConvert.toString());
for (int i = 0; i < numVisits[index]; ++i)
{
asteriskConvert.append("*");
}
}
我知道问题与增量有关。它将第一个数据集的数字与第二个数据集的数字相加,依此类推。我不太确定如何解决它,我一直在把头发拉出来。
任何指导将不胜感激!谢谢!
这是您在该程序中看到的内容:
您去过多少个国家?:2
输入您访问过的 2 个国家/地区:
中国
古巴
现在输入您访问每个国家/地区的次数:
2
3
这是您的数据的另一个外观:
中国**
古巴 ***** ---这就是问题 - 它添加了上面的数字
哇,你旅行了很多次!
最佳答案
您没有重新初始化 asteriskConvert
StringBuilder,因此它会不断增长。在每个国家/地区的循环内重置它以获得新的计数。
打印语句也需要移动到内循环之后,因为我们事先重置了 StringBuilder。
String[] countryList = new String[country];
int[] numVisits = new int[country];
System.out.println("Here is another look of your data:");
StringBuilder asteriskConvert;
for (int index = 0; index < countryList.length; index++)
{
asteriskConvert = new StringBuilder();
for (int i = 0; i < numVisits[index]; i++)
{
asteriskConvert.append("*");
}
System.out.println(countryList[index] + " " + asteriskConvert.toString());
}
应该导致:
China **
Cuba ***
结果仍然是:
**
China ***
Cuba
这意味着:
"".equals(countryList[0])
"China".equals(countryList[1])
"Cuba".equals(countryList[2])
numVisits[0] == 2
numVisits[1] == 3
numVisits[2] == 0
关于java - 数组意外增加两次?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27297054/