Java编译报错unexpected type required variable found value求解
错误原因
报错行(double)index = Math.pow((double)i,2);存在语法错误:
赋值运算符=的左侧必须是可被写入的变量,而(double)index是对index做强制类型转换后得到的临时值,不属于可赋值的变量,因此编译器抛出「需要变量、找到值」的提示。
额外说明:你的代码同时存在逻辑问题,不符合快乐数计算的预期:
- 直接将
charAt()拿到的字符转double得到的是字符的ASCII码,而非字符对应的数字值 - 你调用
Math.pow时使用了循环变量i计算平方,完全没有用到读取到的每一位数字
修复方案
- 先修复语法错误:删除赋值语句左侧多余的强制类型转换,直接对变量
index赋值 - 再修复逻辑错误:将读取到的字符转为对应数字,再计算平方
修正后的完整代码如下:
import java.util.*; public class happy_number { public static void main(String args[]) { Scanner in = new Scanner(System.in); System.out.print("Enter a number: "); String num = in.next(); for (int i = 0; i < num.length(); i++){ // 把字符转为对应的数字值 int digit = num.charAt(i) - '0'; double powResult = Math.pow(digit,2); System.out.println(powResult); } } }
内容的提问来源于stack exchange,提问作者coder_xyz
相关产品推荐
相关产品推荐

