写代码啦
【JAVA 求助】 如何在小范围内简写一个方法签名
回复数(1) 浏览数(74)
reallEz 08月18日 22:37 最后回复来自: 习习 技术文章
{{topic.upvote_count || 0}} 编辑 回复

我在处理 https://github.com/hcsp/print-all-narcissistic-number/pull/229 这个任务时,需要多次调用 Math.pow 方法。

((int) (Math.pow(digits, 3) + Math.pow(tens, 3) + Math.pow(hundredDigits, 3)) == i)

一个 JSer 常用的语法是

const f = () => {
const p = Math.pow
if ((int) (p(digits, 3) + p(tens, 3) + p(hundredDigits, 3)) == i) {
.....
}
}

然后在 Java 中 我想实现这个方法时,按照我已经学到的知识,需要新增一个静态方法,这会不会有些重。有没有更灵活轻便的写法,解决这种局部变量简写方法签名的问题

这个问题我最终的代码实现:
```
package com.github.hcsp.controlflow;

public class Main {
public static void main(String[] args) {
printNarcissisticNumber();
}

/**
 * 打印所有的水仙花数。水仙花数是指一个三位数,其各位数字立方和等于该数本身。
 *
 * <p>例如,153是一个水仙花数,因为1的立方+5的立方+3的立方 = 153
 *
 * <p>提示:可用除法和求余运算得到一个数字的个、十、百位上的数字。
 */
public static double p(double a) {
    return Math.pow(a, 3);
}

public static void printNarcissisticNumber() {
    int MIN_THREE_DIGITS = 100;
    int MAX_THREE_DIGITS = 999;
    String s = "";
    for (int i = MIN_THREE_DIGITS; i < MAX_THREE_DIGITS; i++) {
        // current i
        // 因为位数是确定的 所以执行三次就行了
        int current = i;

        int digits = current % 10;
        current /= 10;
        int tens = current % 10;
        current /= 10;
        int hundredDigits = current;

        if ((int) (p(digits) + p(tens) + p(hundredDigits)) == i) {
            s += (i + ",");
        }
    }
    System.out.println("s = " + s);
}

}
```

{{topic.upvote_count || 0}}

我在处理 https://github.com/hcsp/print-all-narcissistic-number/pull/229 这个任务时,需要多次调用 Math.pow 方法。

((int) (Math.pow(digits, 3) + Math.pow(tens, 3) + Math.pow(hundredDigits, 3)) == i)

一个 JSer 常用的语法是

const f = () => {
const p = Math.pow
if ((int) (p(digits, 3) + p(tens, 3) + p(hundredDigits, 3)) == i) {
.....
}
}

然后在 Java 中 我想实现这个方法时,按照我已经学到的知识,需要新增一个静态方法,这会不会有些重。有没有更灵活轻便的写法,解决这种局部变量简写方法签名的问题

这个问题我最终的代码实现:
```
package com.github.hcsp.controlflow;

public class Main {
public static void main(String[] args) {
printNarcissisticNumber();
}

/**
 * 打印所有的水仙花数。水仙花数是指一个三位数,其各位数字立方和等于该数本身。
 *
 * <p>例如,153是一个水仙花数,因为1的立方+5的立方+3的立方 = 153
 *
 * <p>提示:可用除法和求余运算得到一个数字的个、十、百位上的数字。
 */
public static double p(double a) {
    return Math.pow(a, 3);
}

public static void printNarcissisticNumber() {
    int MIN_THREE_DIGITS = 100;
    int MAX_THREE_DIGITS = 999;
    String s = "";
    for (int i = MIN_THREE_DIGITS; i < MAX_THREE_DIGITS; i++) {
        // current i
        // 因为位数是确定的 所以执行三次就行了
        int current = i;

        int digits = current % 10;
        current /= 10;
        int tens = current % 10;
        current /= 10;
        int hundredDigits = current;

        if ((int) (p(digits) + p(tens) + p(hundredDigits)) == i) {
            s += (i + ",");
        }
    }
    System.out.println("s = " + s);
}

}
```

74
回复 编辑