我有一个问题。我的老师在我的任务中要求用我的数组中的星号(*)替换所有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
=====================================
你们都很有帮助,我可以加快!非常感谢你!
答案 0 :(得分:3)
如果你关心整数的值,你不能可靠地存储大量的整数而不是整数的整数。 (你可以将char *
转换成一个int,如果你真的想要它,但是它的ASCII代码(42)会把它放在那里,并且有一些潜在有效的int值,并引起各种各样的悲伤后面。)
所以你有两个现实的选择:
"*"
而不是"0"
;或"*"
。后者更简单,并且将你的整数保留为整数,这样如果你愿意,你仍然可以在以后轻松地用它们进行数学运算。
答案 1 :(得分:2)
不要试图将星号放在int数组中,而是将注意力集中在将区域输出到屏幕时。创建一个方法来显示数组,就像你在问题中格式化它一样,当你打印数字时,一定要仔细检查它们的值。
注意:我没有给出答案,因为这个问题是homework。
答案 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个数组,如果数组包含零,请确保逐个验证数组,用*替换为零