如何交换数字?

时间:2017-01-03 08:16:09

标签: java

我需要编写获得3个参数的函数(int num,int k,int nDigit)。 函数获取数字并用nDigit替换k index中数字内的数字。

例如:

public IQueryable<tb_Event> Gettb_Event(){

    db.Configuration.ProxyCreationEnabled = false;
    return db.tb_Event
        .Include(tb_Event=> tb_Event.tb_Customer)
        .Include("tb_Event=>tb_Event.tb_EventLocation")
        .Include("tb_EventLocation.tb_Location")
        .Include("tb_EventLocation.tb_Facility");
}

我的问题是如何实现它?我认为将num转换为字符串然后只需用nDigit char替换特定索引上的char的最佳方法。

但有没有办法实现呢?没有

4 个答案:

答案 0 :(得分:4)

public int changeDigit(int num, int k, int nDigit){
    k = pow(10,k);
    double saved = num%k; // Save digits after
    num = num - (num%(k*10)); //Get what's before k
    return ((int) (num + (nDigit*k) + saved));
}

答案 1 :(得分:3)

我不会为你做功课,但这里有一些提示:

将整数转换为字符串:

String s = Integer.toString(1234);

枚举字符串:

 for (i = 0; i < s.length; i++)
 {
     char c = s.charAt(i);
 }

字符串构建(没有StringBuilder类的效率稍差)

 char c = '1';
 String s = "3";

 String j = "";
 j = j + c;
 j = j + s;   // j is now equal to "13"

返回整数字符串:

 int val = Integer.parseInt("42");

答案 2 :(得分:2)

您可以使用StringBuilder。您可以更轻松地查看自己正在做的事情而且不需要执行数学运算,只需调整其位置中的角色。然后将其转换回int

public class Main {
    static int swapParams(int num, int k, int nDigit) {
        StringBuilder myName = new StringBuilder(Integer.toString(num));
        myName.setCharAt(k-1, Integer.toString(nDigit).charAt(0));
        return Integer.parseInt(myName.toString());
    }
    public static void main(String[] args) {
        System.out.println(swapParams(5498, 2, 3));
    }
}

http://ideone.com/e4MF6m

答案 3 :(得分:1)

你可以这样做:

public int func(int num, int k, int nDigit) {
    String number = String.valueOf(num);
    return Integer.parseInt(number.substring(0, k - 1) + nDigit + number.substring(k, number.length()));

}

此函数获取没有第k个数字的数字的第一个字符,并将nDigit添加到其中。然后它添加数字的最后一部分并将其作为整数返回。