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+",");
}
}
}
如注释位置,我对比了下两个代码,没看出太大区别,不知道为什么报错,请大神们指教,谢谢 展开
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+",");
}
}
}
如注释位置,我对比了下两个代码,没看出太大区别,不知道为什么报错,请大神们指教,谢谢 展开
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询