keishin
@keishin

Are you sure you want to delete the question?

Leaving a resolved question undeleted may help others!

long型配列において、long型データで要素数を決定できない

解決したいこと

long型配列において、long型データで要素数を決定できなくて困っています。

発生している問題・エラー


long n = sc.nextLong();
long[][] table = new long[n][n];

このようにコードを書くと
- 型の不一致: long から int には変換できません

とエラーが出ます。これはなぜでしょうか?

自分で試したこと

様々なサイトを閲覧しましたが、long型配列の要素数についての記述を見つけることができませんでした。
回答いただけると幸いです。よろしくお願いいたします。

0

2Answer

Java言語仕様より引用

Arrays must be indexed by int values; short, byte, or char ...

配列の添え字はintの範囲内で宣言する必要があり、longintよりも範囲の広い型なので使用できません(と書かれている)。

"sc.nextLong();"がint範囲に収まるのであれば、

int n = (int)sc.nextLong();

とすれば、コンパイル通るでしょう(それが正しい結果かどうかは私にはわからないが)

2Like

Comments

  1. @keishin

    Questioner

    回答ありがとうございます!
    返信遅くなり申し訳ありません。

    添字はintの範囲内で宣言しなければいけないのですね、、
    大きなデータを扱いたかったので別の方法を試してみようと思います。

    勉強不足で言語の仕様書を読むという選択肢が思いつきませんでした。
    何かにつまずいたときなど、仕様書を読んで見ようと思います!

    繰り返しになりますが、回答誠にありがとうございました。

int型で指定できないほどのサイズの配列って、消費メモリサイズがGB以上になると思うのですが、メモリ足ります?

0Like

Comments

  1. @keishin

    Questioner

    返信遅くなり申し訳ありません。初学者のため、メモリについては分からないです。プログラムも書き換えてしまったので、データが残っていませんでした。

    今後は消費メモリなども考慮に入れてプログラムを書いていけるよう、気をつけてみたいと思います!

Your answer might help someone💌