0

我有个问题。作为我作业的一部分,我的老师要求将数组中的所有 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 数组。我尝试创建一个值为“ * ”的字符串。然后我尝试将其解析为 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   
=====================================

你们都很有帮助,我可能会很快添加!太感谢了!

4

5 回答 5

3

如果您也关心整数的值,那么您不能可靠地将除整数以外的任何内容存储在整数数组中。*(如果你真的想要,你可以将 char 转换为 int,但是它的 ASCII 代码 (42) 会将它放在那里,并带有潜在的 int 有效值,并在以后给你带来各种悲伤。)

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

  • 存储字符串而不是整数,将所有内容转换为字符串,并存储"*"而不是"0"; 或者
  • 只需在输出数组时担心星号,只要值为 0,只需输出即可"*"

后者要简单得多,并且将您的整数保留为整数,因此您以后仍然可以根据需要轻松地对它们进行数学运算。

于 2012-09-22T23:25:03.293 回答
2

与其尝试将星号放在 int 数组中,不如关注将区域输出到屏幕的时间。创建一个方法来显示您在问题中格式化的数组,并且当您打印数字时,请务必仔细检查它们的值。

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

于 2012-09-22T23:23:17.380 回答
0

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

int[] a = new int[]{1, 2, 0, 5, 9, 3, 0};
for (int i : a)
    // If ("a" is 0) then print "*", otherwise print "a"
于 2012-09-22T23:26:36.967 回答
0

第一:您不能将 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[] 循环打印它们并打印每个元素

于 2012-09-22T23:35:25.517 回答
-5

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

于 2012-09-22T23:21:16.923 回答