我最近收到了关于uni的问题,这是关于信用卡声明,说我有一串数字,然后我将这些数字转换为单独的整数然后我将它们增加10的幂,取决于他们使用horners方法在字符串中的位置 然后我必须添加我从循环中得到的值,使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;
}
答案 0 :(得分:1)
我很可能不会关注你,因为这听起来太简单了。 但要返回一个长(或整数),你所要做的就是总结这些数字:
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;
}
此代码适用于负数和带有+符号的奇怪数字。如果有任何其他角色,则会抛出异常。
答案 1 :(得分:0)
我认为您的代码不是面向对象的,而且很难阅读和理解。
基本的,问题是映射而且非常简单。
如果你用Java编写代码,最好以OO方式使用,尽管我不太喜欢java。
查看我的代码
@Test
public void testCardScoreSystem() {
Map<String, String> scoreMapping = new HashMap<String, String>();
scoreMapping.put("1", "1000");
scoreMapping.put("2", "200");
scoreMapping.put("3", "30");
scoreMapping.put("4", "4");
String[] input = {"1", "2", "3", "4"};
long score = 0;
for (String str : input) {
String mappedValue = scoreMapping.get(str);
if (mappedValue == null) {
throw new RuntimeException("Hey dude, there is no such score mapping system! " + str);
}
score += Long.valueOf(mappedValue);
}
System.out.println(score);
}