java新人求教 代码中pow(i,n)报错,不知道为什么

我自己练习求水仙花数的做法:1、这是我判断一个数字是否是水仙花数代码,一切正常:importjava.util.*;importstaticjava.lang.Math.... 我自己练习求水仙花数的做法:
1、这是我判断一个数字是否是水仙花数代码,一切正常:
import java.util.*;
import static java.lang.Math.*;

public class Narcissus_Numbers {

public static void main(String[] args) {

Scanner in = new Scanner(System.in);

System.out.println("输入一个三位或三位以上的正整数:");
String num = in.nextLine();

long ln = Long.parseLong(num);
if (ln < 100)
System.out.println("输入错误!");

int n = num.length();

int[] inum = new int[n];

for (int i=0;i<n;i++) {
char ch = num.charAt(i);
String str = ""+ch;
inum[i] = Integer.parseInt(str);
}

long sum = 0;
for (int i : inum) {
sum += pow(i,n);
}

if (sum == ln)
System.out.println("此数是水仙花数。");

else
System.out.println("此数不是水仙花数。");

}

}

2、下面是我要求一个范围内所有水仙花数的代码:
import java.util.*;
import static java.lang.Math.*;

public class Test111111 {

public static void main(String[] args) {

Scanner in = new Scanner(System.in);

System.out.println("输入一个位数大于等于3的正整数,以显示出该数字范围内的所有水仙花数:");
String num = in.nextLine();

int n = num.length();
long ln = Integer.parseInt(num);

int i=0,j=0;
String str1 = ""+i;

int str1_n = str1.length();
long l = Long.MAX_VALUE;

ArrayList k = new ArrayList();
long sum = 0;
for (i=100;i<=ln;i++) {
boolean flag = true;
for (j=0;j<str1_n;j++) {
char ch = str1.charAt(j);
String str2 = "" + ch;
k.add(Integer.parseInt(str2));
sum += pow(k.get(j),str1_n); //这里对 pow 报错
}
if (sum != i) {
flag = false;
break;
}
if (flag)
System.out.print(i+",");
}
}

}
如注释位置,我对比了下两个代码,没看出太大区别,不知道为什么报错,请大神们指教,谢谢
展开
 我来答
o00RAINBOW00o
2013-05-14 · TA获得超过458个赞
知道答主
回答量:67
采纳率:0%
帮助的人:73.5万
展开全部
sum += pow(Integer.parseInt(k.get(j).toString()), str1_n); 报错那行改成这个样子试试
追问
哦,这个问题后来想到错在哪里了,pow方法中的参数类型要求是double的,所以转换一下就好了,谢谢你的热心解答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式