事故增加两次阵列?

时间:2014-12-04 14:54:56

标签: java arrays

新学生试图在这里学习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
以下是您的数据的另一种外观:

中国** 古巴***** ---这是问题 - 它增加了上述数字
哇,你旅行很多!

2 个答案:

答案 0 :(得分:3)

您没有重新初始化asteriskConvert StringBuilder,因此它不断增长。在每个国家/地区的循环中重置它以获得新的计数。

print语句还需要移到innerloop之后,因为我们事先正在重新设置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());
    }

应该导致:

  

中国**

     

古巴***

结果仍然是:

  

**

     

中国***

     

古巴

这意味着:

"".equals(countryList[0])
"China".equals(countryList[1])
"Cuba".equals(countryList[2])

numVisits[0] == 2
numVisits[1] == 3
numVisits[2] == 0

答案 1 :(得分:0)

尝试

String[] countryList = new String[country];
int[] numVisits = new int[country];

System.out.println("Here is another look of your data:");

for (int index = 0; index < countryList.length; index++){
    StringBuilder asteriskConvert = new StringBuilder();       
        for (int i = 0; i < numVisits[index]; ++i){
            asteriskConvert.append("*");
        }
    System.out.println(countryList[index] + " " + asteriskConvert.toString());
}