当前位置: 首页 > 知识库问答 >
问题:

Java - 无法在基元类型 int 上调用 padLz(int)

解念
2023-03-14

我一直在尝试移植一段JavaScript代码,现在,我唯一尚未开始工作的部分出现了此错误:无法在原始类型int上调用padLz(int)。原始JavaScript代码在下面,同样是我的移植版本,我还无法工作的部分还突出显示。

错误:

无法在基元类型 int 上调用 padLz(int)

原件

 OsGridRef.prototype.toString = function(digits) {
              digits = (typeof digits == 'undefined') ? 10 : digits;
              e = this.easting, n = this.northing;
              if (e==NaN || n==NaN) return '??';

              // get the 100km-grid indices
              var e100k = Math.floor(e/100000), n100k = Math.floor(n/100000);

              if (e100k<0 || e100k>6 || n100k<0 || n100k>12) return '';

              // translate those into numeric equivalents of the grid letters
              var l1 = (19-n100k) - (19-n100k)%5 + Math.floor((e100k+10)/5);
              var l2 = (19-n100k)*5%25 + e100k%5;

              // compensate for skipped 'I' and build grid letter-pairs
              if (l1 > 7) l1++;
              if (l2 > 7) l2++;
              var letPair = String.fromCharCode(l1+'A'.charCodeAt(0), l2+'A'.charCodeAt(0));

              // strip 100km-grid indices from easting & northing, and reduce precision
              e = Math.floor((e%100000)/Math.pow(10,5-digits/2));
              n = Math.floor((n%100000)/Math.pow(10,5-digits/2));

              var gridRef = letPair + ' ' + e.padLz(digits/2) + ' ' + n.padLz(digits/2);

              return gridRef;
            }

 // pad a number with sufficient leading zeros to make it w chars wide

    Number.prototype.padLZ = function(w) {
      var n = this.toString();
      for (var i=0; i<w-n.length; i++) n = '0' + n;
      return n;
    }

移植版本

  public String gridrefNumToLet(int e, int n, int digits) {

  // get the 100km-grid indices
  double e100k = Math.floor(e/100000), n100k = Math.floor(n/100000);

  if (e100k<0 || e100k>6 || n100k<0 || n100k>12) return null;

  // translate those into numeric equivalents of the grid letters
  double l1 = (19-n100k) - (19-n100k)%5 + Math.floor((e100k+10)/5);
  double l2 = (19-n100k)*5%25 + e100k%5;

  // compensate for skipped 'I' and build grid letter-pairs
  if (l1 > 7) l1++;
  if (l2 > 7) l2++;
      
  String letPair = String.valueOf(l1+"A".charAt(0))+ String.valueOf(l2+"A".charAt(0));

  // strip 100km-grid indices from easting & northing, and reduce precision
  e = (int) Math.floor((e%100000)/Math.pow(10,5-digits/2));
  n = (int) Math.floor((n%100000)/Math.pow(10,5-digits/2));

string grid ref = let pair ' ' e . padlz(digits/2)' ' n . padlz(digits/2);

  return gridRef;
}

 // pad a number with sufficient leading zeros to make it w chars wide

    public String padLZ(String w) {
              String n = this.toString();
              for (int i=0; i< n.length(); i++) n = '0' + n;
              return n;
    }

共有2个答案

易衡
2023-03-14

将e.padLz(digits/2)和n.padLz(digits/2)替换为padLz(e, digits/2)和padLz(n, digits/2),然后实现一个带有签名的方法

String padLz(int val, int digits) {
    ...
}
邓越泽
2023-03-14

将原始int值作为参数传递给padLz函数。

String padLz(int val, int digits) {

然后考虑使用

org.apache.commons.lang3.StringUtils.leftPad("" + val, digits, '0');

或中发现的变化

我怎么用左边的零填充整数?

实例

private static String padLz (int val, int digits) {
    return org.apache.commons.lang3.StringUtils.leftPad("" + val, digits, '0');
}

System.out.println(padLz (2, 5));    --> 00002
 类似资料:
  • 不知道如何让不出错。 非常迷茫。已尝试更改多行代码。 我希望它能够与< code > compare to(new number)没有问题。 错误消息:“无法对基本类型int调用< code>compareTo(int)

  • 我试图使用recveAll()函数在PartyA(发起方)中接收有效负载。但是遇到了以下错误: java.lang.IllegalArgumentException:执行流时无法接收基元类型[int]。 启动流程: 响应程序流: 后来为了解决这个错误。我发现这个链接很有帮助。通过在receiveAll()中将Int改为Integer,解决了这个问题。但是int在单接收函数中工作,如下所示: 为什么

  • 我目前正在学习如何使用遗传算法。然而,我在使用我的方法时遇到了困难。这种方法应该比较两个人之间的适应值。我一直试图调用我的

  • 我最近做了一个程序在处理Java加载图像和模糊它,但现在我把这个函数作为一个方法到一个类,得到了这个错误: 无法在原始类型int上调用blurImage(int,int,int) 我的班级: 我的代码调用它: 错误就在这条线上 i、 blurImage(blurDecrement,blurDecrement,round(maxBlur)); 我已经在互联网上搜索了这个问题,但没有得到我想要的东西。

  • 我有这样一个班级: 我想将数组迭代分解为一个单独的方法,以便在整个程序中重复使用或重新调用它,如下所示: 然后我想在我的公共方法中调用它,例如: 我在这里尝试了解决方案:无法通过添加但它仍然不工作。我有所有可用变量的setter和getter。我相信有一个简单的解决办法,但请让我知道,如果有办法绕过它。 谢谢你

  • 想改进这个问题吗 通过编辑此帖子,添加详细信息并澄清问题。 我对下面的if语句块有问题: