java - 我如何从java循环中添加值

标签 java loops numbers concatenation

我最近收到了有关uni的问题,该问题涉及信用卡对账单,其中显示我有一串数字,然后我将这些数字转换为单独的整数,然后使用horners方法根据它们在字符串中的位置将它们增加10的幂 然后我必须添加从循环中获得的值以使 1 成为整数。 我知道这是一种将字符串转换为 int 的奇怪方法,但我的作业指出我必须使用 horners 方法来转换字符串,而不是使用内置的 java 类/方法

我的问题是,如何添加单独的加权数字并将它们连接成一个数字。

如果有帮助的话,举个例子,

给定卡号 1234,该数字根据其位置和长度进行加权,因此:

1 - 1000
2 - 200
3 - 30
4 - 4

然后将它们相加以创建一个整数

1, 2, 3,4 ---> 1234

这是迄今为止我的代码

public static long toInt(String digitString) {
    long answer = 0;
    long val = 0;
    String s = "";
    for (int j = 0; j < digitString.length(); j++) {
        val = digitString.charAt(j) - '0';
        val = (long) (val * Math.pow(10, (digitString.length() - 1) - j));
        System.out.println(val);

    }
    return answer;
}

最佳答案

很可能我没有关注你,因为这听起来太简单了。 但要返回一个长整型(或整数),您所要做的就是将这些数字相加:

public static long toLong(String digitString) {
    long answer = 0;
    long val = 0;
    for (int j = 0; j < digitString.length(); j++) {
        val = digitString.charAt(j) - '0';
        val = (long) (val * Math.pow(10, (digitString.length() - 1) - j));
        answer += val; // here! :)
        //System.out.println(val);
    }
    return answer;
}

请注意,这不适用于负数,因此这里有一个更复杂的版本:

public static long toLong(String digitString) {
    long answer = 0;
    long val = 0;
    boolean negative = false;
    int j = 0;

    if (digitString.charAt(0) == '-') {
        negative = true;
        j = 1;
    } else if (digitString.charAt(0) == '+')
        j = 1;

    for (; j < digitString.length(); j++) {
        if (!Character.isDigit(digitString.charAt(j)))
            throw new NumberFormatException(digitString);

        val = digitString.charAt(j) - '0';
        val = (long) (val * Math.pow(10, (digitString.length() - 1) - j));
        answer += val;
    }

    return negative ? -answer : answer;
}

此代码适用于负数以及以 + 号开头的奇怪数字。如果有其他字符,则会抛出异常。

关于java - 我如何从java循环中添加值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18326701/

相关文章:

java - 我可以在一行中转换和使用一个对象吗?

java - 为什么我只能在 RESTlet 中将 Representation 转换为字符串一次?

JavaScript、AJAX快速循环

javascript - 为什么我的代码不附加到循环内的字符串?

performance - Number VS Varchar(2) 主键

java - MySQL MD5 和 Java MD5 不相等

java - Web 应用程序上的网络质量指示器

python - for 循环忽略列表中的一些元素

regex - 数字和正则表达式

python - 错误 1318 : Incorrect number of arguments for PROCEDURE ComicHub. sp_createUser;预期 3,得到 4