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

intの値も気にする場合は、int以外の多くをintの配列に確実に格納することはできません。*(本当に必要な場合は、charをintに変換できますが、そのASCIIコード(42)は、intの潜在的に有効な値を使用してcharをそこに配置し、後であらゆる種類の悲しみを引き起こします。)

したがって、2つの現実的な選択肢があります。

  • intsの代わりに文字列を格納し、すべてを文字列に変換し、 ;"*"の代わりに格納します。"0"また
  • 配列を出力するときはアスタリスクだけを気にしてください。値が0の場合は、"*"代わりに出力してください。

後者ははるかに単純で、intをintのままにしておくので、必要に応じて後で簡単に数学を行うことができます。

于 2012-09-22T23:25:03.293 に答える
2

アスタリスクをint配列内に配置するのではなく、領域を画面に出力するときに焦点を合わせます。質問でフォーマットしたように配列を表示するメソッドを作成します。数値を出力するときは、値を注意深く確認してください。

注:この質問はなので、答えは出しません。

于 2012-09-22T23:23:17.380 に答える
0

最初:文字列を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 に答える
0

配列自体でsを*置き換えるのではなく、印刷するときにsを処理する必要があります。0このようなもの(類似の方法は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"
于 2012-09-22T23:26:36.967 に答える
-5

8つの配列があるようです。配列にゼロが含まれている場合は、配列を1つずつ検証し、ゼロを*に置き換えてください。

于 2012-09-22T23:21:16.923 に答える