【问题标题】:java auto converts string to long?java自动将字符串转换为长字符串?
【发布时间】:2014-01-01 16:29:45
【问题描述】:

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

    }

}

【问题讨论】:

  • 1. charAtint 参数作为参数。您将其传递给Long。 2. charAt 返回 char,而不是 String
  • @ZouZou 这应该是答案
  • 请随意发布它作为答案,我会支持你的 =)
  • 太棒了!这消除了我的疑问。错误是因为传递给 charAt 的参数而不是因为 numb。谢谢! :)

标签: java string long-integer


【解决方案1】:
for(Long j=i ; j<i+3 ; j++) {
    String c = numb.charAt(j);

如您所见,您声明 j 为长。 String.charAt 方法将 int 作为参数索引,并且不长。为了防止这种情况发生,请考虑是否真的需要 j 长。如果您不这样做,请将其更改为 int 并且它应该可以正常工作(我猜您的 String numb 无论如何都不会比 int 的大小长)。如果您这样做,请阅读有关将长整数转换为整数的信息(例如:Convert Long into Integer)。

【讨论】:

    【解决方案2】:
    String c =Character.toString(numb.charAt(j.intValue()));
    

    【讨论】:

    • @Dejan Ciew > 即使您的解决方案是正确的,请更加明确,并尝试解释更多。下次,您的答案不应该得到验证。
    猜你喜欢
    • 1970-01-01
    • 2010-12-25
    • 2012-09-19
    • 2014-06-15
    • 2023-03-17
    • 2016-04-21
    • 2019-03-22
    • 1970-01-01
    相关资源
    最近更新 更多