如何在Int数组中存储String?

时间:2012-09-22 23:18:01

标签: java string multidimensional-array int

我有一个问题。我的老师在我的任务中要求用我的数组中的星号(*)替换所有0(零)。

这是我的程序输出的一个例子:

Best Tour: #31
Number of Moves: 57
=====================================
 1   16   57    6    0   36   47    0   
56    7    0    3   46    5   32   37   
17    2   15    8   33   30   35   48   
14   55   22   45    4   49   38   31   
23   18   13   50    9   34   29   42   
54   51   24   21   44   41   26   39   
0    12   19   52   25   10   43   28   
0    53    0   11   20   27   40    0   
=====================================

基本上,到处都是零,他希望它显示一个星号。 这是一个int数组。我尝试使用值“*”创建一个String。然后我尝试将其解析为int,但我得到:

Exception in thread "main" java.lang.NumberFormatException: For input string: "*"

我应该尝试其他任何建议吗?


非常感谢你们!我只是没有正确地看待事情。在阅读了一些评论后,我意识到尝试将零点更改为数组本身的星号是没有多大意义的。

所以我修改了我的printArray()方法,这样在任何0的实例中,它都会打印*;否则它只会打印应该在那里的任何数字。

现在看来是这样的:

Best Tour: #45
Number of Moves: 58
=====================================
 1   42   13   18   31   44   27    *   
58   11   32   43   14   17   30   45   
41    2   57   12   19   26   15   28   
56   33   10    5   16   29   46    *   
 3   40   55   34    9   20   25   50   
 *   37    4   53    6   49   22   47   
39   54   35    8   21   24   51    *   
36    *   38    *   52    7   48   23   
=====================================

你们都很有帮助,我可以加快!非常感谢你!

5 个答案:

答案 0 :(得分:3)

如果你关心整数的值,你不能可靠地存储大量的整数而不是整数的整数。 (你可以将char *转换成一个int,如果你真的想要它,但是它的ASCII代码(42)会把它放在那里,并且有一些潜在有效的int值,并引起各种各样的悲伤后面。)

所以你有两个现实的选择:

  • 存储字符串而不是整数,将所有内容转换为字符串,并存储"*"而不是"0";或
  • 只关注输出数组时的星号,无论值是0,只需输出"*"

后者更简单,并且将你的整数保留为整数,这样如果你愿意,你仍然可以在以后轻松地用它们进行数学运算。

答案 1 :(得分:2)

不要试图将星号放在int数组中,而是将注意力集中在将区域输出到屏幕时。创建一个方法来显示数组,就像你在问题中格式化它一样,当你打印数字时,一定要仔细检查它们的值。

注意:我没有给出答案,因为这个问题是

答案 2 :(得分:0)

您应该在打印时处理*,而不是在数组本身中替换0 s。像这样的东西(类似的方法可以在2D情况下使用):

int[] a = new int[]{1, 2, 0, 5, 9, 3, 0};
for (int i : a)
    // If ("a" is 0) then print "*", otherwise print "a"

答案 3 :(得分:0)

FIRST:你不能将String添加到int []数组中。 所以,你可以做类似下面的事情。 因为这是一个家庭作业,我写了整个代码。

int[] x= {0,2,4,0,7};
String[] str= new String[x.length];
for(loop thru int array) {
    // check if the indexed element is equal to 0
    // if it is equal to 0 then add '*' into str
    // else add the number at the index into str
}

如果你想通过str []循环打印它们并打印每个元素

答案 4 :(得分:-5)

我看到有8个数组,如果数组包含零,请确保逐个验证数组,用*替换为零