[解決済み】doubleからintへの非可逆変換の可能性があり、シンボルが見つからない【重複あり
質問
というエラーがプログラムに表示されるのですが。
Lyrics.java:11: error: cannot find symbol
Cube(b); ^
symbol: メソッド Cube(int)
場所: クラス Lyrics
Lyrics.java:15: error: incompatible types: double から int への非可逆的な変換の可能性
return Math.pow (b, 3); ^
2エラー
しかし、私はコメントを見て、私はまだ問題を理解していない、私のコードで二重はありませんなぜそれはこのように言うだろう。また、シンボルが見つからないというエラーも理解できません。また、シンボルが見つからないというエラーも理解できません。
import static java.lang.Math.pow;
import java.util.Scanner;
public class Lyrics
{
public static void main(String []args)
{
int b;
Scanner scan = new Scanner(System.in);
System.out.println ("Enter a number: ");
b = scan.nextInt();
Cube(b);
}
public static int cube (int b)
{
return Math.pow (b, 3);
}
}
解決方法は?
最初の問題は、単純なタイプミスです。 Javaは大文字と小文字を区別するので
cube
と
Cube
は異なることを意味します。 解決策 1) 一貫性を持たせる。2) メソッド名には小文字で始まる名前を使う...Javaスタイルガイドに従う。
2つ目の問題は、メソッドのシグネチャが
Math.pow
を参照してください。
ジャバドック
. その結果を
double
. 次に
double
を
int
であり、かつ
その
は非可逆変換です。
解決策は以下の通りです。
return b * b * b; // i.e. don't use `pow`.
または
return (int) Math.pow(b, 3);
2つ目は、コンパイルエラーに直接対処するために
キャスティング
は
double
を返します。
int
. これは、非可逆変換が実際にOKであることをコンパイラに伝える方法です。
あなたが見ているロッシー変換のエラーメッセージは、十分大きな値の
b
の結果は
Math.pow(b, 3)
として表現するには大きすぎる。
int
1
. 型キャストを使用すると、Java は "大きすぎる浮動小数点数を次のように変換します。
Integer.MAX_VALUE
.
最初の解決策はより速く、よりシンプルなコードですが、もし
b
が大きすぎると、計算が黙ってオーバーフローしてしまい、無意味な答えが返ってきます。
アップデイト - もし、オーバーフローを常にエラーとして処理させたいのであれば
return Math.multiplyExact(b, Math.multiplyExact(b, b));
または
return Math.toIntExact((long) Math.pow(b, 3));
またはそのバリエーション。
1 - 実は、コンパイラは、以下のセマンティクスを知りません。
pow
を知らないので
の値が十分大きい場合、その値は0になります。
b
..."
. しかし、それはメソッド呼び出しが
した。
は十分に大きな値を返すので、変換
する
がロスになる。 そのため、メッセージには
"です。
可能
lossy conversion"
.
関連
-
[解決済み] hibernateでResultSetを抽出できない。
-
[解決済み】StringUtils.isBlank() vs String.isEmpty()
-
[解決済み】"比較メソッドはその一般契約に違反する!"
-
[解決済み] メソッドがスーパータイプのメソッドをオーバーライドまたは実装していない - Overrideの場合
-
[解決済み】Javaを使用するSelenium - ドライバの実行ファイルのパスは、webdriver.gecko.driverシステムプロパティで設定する必要があります。
-
[解決済み】Hibernateの例外「failed to lazily initialize a collection of role」の解決方法
-
[解決済み】スレッド "main "での例外 java.util.NoSuchElementException
-
[解決済み】Java LinkedListでNodesを使用する
-
[解決済み】どういう意味か。Serializableクラスがstatic final serialVersionUIDフィールドを宣言していないとは?重複している] [重複している] [重複している] [重複している
-
[解決済み] Cannot find symbol" や "Cannot resolve symbol" というエラーはどういう意味ですか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] if / for / while 内で "Missing return statement" が発生する。
-
[解決済み】Javaの".class期待値"
-
[解決済み】エラー。Selection does not contain a main type
-
[解決済み】"比較メソッドはその一般契約に違反する!"
-
[解決済み】Android Studioでタスク :app:compileDebugJavaWithJavac の実行に失敗しました。
-
[解決済み】JLabelのテキストを中央に配置するには?
-
[解決済み】ソースルート外のJavaファイル intelliJ
-
[解決済み】純粋なJUnitテストにVisibleForTestingを使用する方法
-
[解決済み】接続Java - MySQL : 公開鍵の取得は許可されていません。
-
[解決済み] Cannot find symbol" や "Cannot resolve symbol" というエラーはどういう意味ですか?