java中的函数是否像SUBSTRING函数一样工作但是对于整数?

时间:2014-07-08 21:25:44

标签: java

java中的函数是否像SUBSTRING函数一样工作但是对于整数。例如用户的输入是456789,我想把它分成两部分并将它们放入不同的变量中。分开他们。例如,

用户输入:456789

前3个数字将在变量A中。

最后3个数字将在变量B中。

传递= A / B;

有人可以帮助我,我该怎么做,

感谢。

6 个答案:

答案 0 :(得分:11)

使用整数除法和模数运算符:

int input = 456789;
int a = input / 1000;
int b = input % 1000;

答案 1 :(得分:1)

这是基于数学的正整数和负整数的实现(可能可以优化):

public static void main(String[] args) {
    System.out.println(substring(2, 0, 1)); // prints "2"
    System.out.println(substring(2523, 2, 2)); // prints "23"
    System.out.println(substring(-1000, 0, 2)); // prints "-1"
    System.out.println(substring(-1234, 0, 4)); // prints "-123"
    System.out.println(substring(-1010, 2, 1)); // prints "0"
    System.out.println(substring(-10034, 3, 2)); // prints "3"
    System.out.println(substring(-10034, 2, 4)); // prints "34"
}

public static int substring(int input, int startingPoint, int length) {
    if (startingPoint < 0 || length < 1 || startingPoint + length > size(input)) {
        throw new IndexOutOfBoundsException();
    }
    if (input < 0 && startingPoint == 0 && length < 2) {
        throw new IndexOutOfBoundsException("'-' can not be returned without a digit");
    }
    input /= (int) Math.pow(10, size(input) - length - startingPoint); // shift from end by division
    input = input % (int) Math.pow(10, length); // shift from start by division remainder
    if (input < 0 && startingPoint > 0) {
        input = Math.abs(input); // update sign for negative input
    }
    return input;
}

private static int size(int input) {
    int size = 1;
    while (input / 10 != 0) {
        size++;
        input /= 10;
    }
    return input < 0 ? ++size : size; // '-'sign is a part of size
}

答案 2 :(得分:0)

分割&#34;号码&#34;不是你想做的。您想要拆分NUMERAL,它是表示数量(数字)的字符串。您可以像任何其他文字(字符串)一样拆分数字:不要解析用户的输入并使用子字符串。如果要确保文字是实际数字,请解析它以查看是否抛出异常。如果没有,你有一个数字。但是不要坚持整数,而是要保持字符串。

答案 3 :(得分:0)

你走了:

您为方法指定了数字,开始和结束索引。

public static void main(String[] args) {
       System.out.println(getPartOfInt(93934934, 3, 7));`

}

public static int getPartOfInt(int number, int start, int end){
    Integer i = new Integer(number);
    char[] chars = i.toString().toCharArray();
    String str = "";
    for(int j = start; j < end && j < chars.length; j++){
        str += chars[j];
    }
    return Integer.parseInt(str);
}

OR:

public static int getPartOfInt(int number, int start, int end){
    String str = new Integer(number).toString();
    return Integer.parseInt(str.substring(start, Math.min(end, str.length())));
}

答案 4 :(得分:0)

您也可以先将数字转换为String,如下所示:

int num = 456789;
String strNum = String.valueOf(num);
String part1 = strNum.substring(0, strNum.length() / 2 - 1);
String part2 = strNum.substring(strNum.length() / 2);

然后,您可以将其转换回int,如下所示:

int part1Num = Integer.parseInt(part1);
int part2Num = Integer.parseInt(part2);

现在你可以用这两个int来做你想要的所有算术。

答案 5 :(得分:0)

@DeanLeitersdorf这是函数(@clcto s解决方案)

int subinteger(int input, int from, int size)
{
    while (input > pow(10, size + from) - 1)
        input /= 10;
    return input % (int)pow(10, size);
}

这是一个c ++解决方案,但我希望你可以轻松地将它转换为Java