Java程序报错:possible lossy conversion from double to int 求助
Hey there! Let's work through that error you're seeing. The "possible lossy conversion from double to int" message pops up when you try to assign a double value (which can store decimals) directly to an int variable (which only holds whole numbers) without telling Java you're okay with losing decimal data. It's Java's way of protecting you from accidental data loss.
Why This Happens in Your Code
From your snippet, it looks like you're building a random option picker—so you're probably using Math.random() (which returns a double between 0.0 and 1.0) to generate your random number. If you wrote something like:
random = Math.random() * options;
That’s the problem! The result of Math.random() * options is a double, and Java won’t let you shove that into an int variable automatically.
Two Easy Fixes
1. Explicit Casting (If You Stick with Math.random())
Use (int) to explicitly convert the double result to an int. Important: Wrap the entire calculation in parentheses, otherwise you’ll only cast Math.random() (which would always be 0):
// Generates a number between 0 and options-1 (perfect for array indexes) random = (int) (Math.random() * options);
2. Use Random Class (Cleaner & Safer)
The Random class has a nextInt() method that directly returns an int, so you don’t have to deal with casting at all. This is my go-to for random integers:
import java.util.Random; // Inside your main method: Random rand = new Random(); // nextInt(options) gives a number from 0 to options-1 exactly random = rand.nextInt(options);
Quick Note for Your Program
Since your choices array uses indexes from 0 to choices.length - 1, both of these methods will generate valid indexes—so you won’t hit an ArrayIndexOutOfBoundsException either.
内容的提问来源于stack exchange,提问作者Jacob Wenzel

