java自动将字符串转换为long?

时间:2014-01-01 16:29:46

标签: java string long-integer

在下面的代码中,在内部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);

    }

}

2 个答案:

答案 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()));