在下面的代码中,在内部for循环中,我收到以下错误:
LargestProdInSeries.java:16:java.lang.String中的charAt(int)不能 应用于(java.lang.Long)
String c = numb.charAt(j);
为什么在我声明num为String时会发生这种情况?
java是否自动转换,看到我的整个字符串是一个数字? 我该如何防止这种情况?
public class LargestProdInSeries {
public static void main(String[] args) {
String numb = "731671";
Long maxProd=0L;
for(Long i = 0L; i < numb.length() ; i++) {
Long prod=1L;
for(Long j=i ; j<i+3 ; j++) {
String c = numb.charAt(j);
prod *= Long.parseLong(c);
}
//inner for
if(maxProd<prod) {
System.out.println(maxProd);
}
}
System.out.println("Max Prod = "+maxProd);
}
}
答案 0 :(得分:3)
for(Long j=i ; j<i+3 ; j++) {
String c = numb.charAt(j);
如你所见,你声明j很长。 String.charAt方法将int作为参数索引,而不是长。为了防止这种想法,如果你真的需要j很长。如果你不这样做,把它改成int,它应该工作正常(我猜你的String numb不会比int的大小长)。如果您这样做,请阅读有关将long转换为整数的信息(例如:Convert Long into Integer)。
答案 1 :(得分:0)
String c =Character.toString(numb.charAt(j.intValue()));