我需要编写获得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的最佳方法。
但有没有办法实现呢?没有
答案 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));
}
}
答案 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添加到其中。然后它添加数字的最后一部分并将其作为整数返回。