我一直在試圖弄清爲什麼每當我使用某些測試用例時,我總是收到錯誤(parseInt和valueOf錯誤)。
9和94187978322都不起作用,並且出現錯誤。
這裏是我的所有測試用例(有些工作別人不一樣): 0, 1, 9, 99, 12, 808, 2133, 321123,
這也從SPOJ的經典問題叫回文。正確實施parseInt和valueOf時發生錯誤
import java.util.*;
import java.lang.*;
class PALIN {
public String palinNum(String s) {
int len = s.length();
String center = "";
if(len % 2 == 1) {
center = Character.toString(s.charAt(len/2));
}
String left = s.substring(0, len/2);
String right = "";
for(int j = left.length()-1; j>=0; j--) {
right += left.charAt(j);
}
String palin = "";
palin = left + center + right;
if((Integer.valueOf(palin)) > (Integer.valueOf(s))) {
return palin;
}
else {
if(center.equals("")) {
}
else {
if((Integer.valueOf(center)) < 9) {
center = String.valueOf(((Integer.valueOf(center))) + 1);
return left + center + right;
} else if(left.equals("")) {
return "11";
}
else {
center = "0";
}
}
}
if((Integer.valueOf(left)) == (left.length()*9)) {
if(s.length() == 2) {
return "101";
} else if(s.length() == 3){
return "1001";
}
else {
String formatted = String.format("%-" + (left.length()) + "s", 1).replace(' ', '0');
return formatted + "1";
}
}
else {
String[] leftlist = left.split("");
int lastIndex = left.length()-1;
while((Integer.valueOf(leftlist[lastIndex])) == 9) {
leftlist[lastIndex] = "0";
lastIndex--;
}
leftlist[lastIndex] = Integer.toString((Integer.valueOf(leftlist[lastIndex])) +1);
left = Arrays.toString(leftlist);
for(int k = left.length()-1; k>=0; k--) {
right += left.charAt(k);
}
return left + center + right;
}
}
public static void main(String[] args) throws java.lang.Exception {
Scanner sc = new Scanner(System.in);
int nCases = Integer.valueOf(sc.nextLine());
for(int i = 1; i <= nCases; i++) {
String input = sc.nextLine();
PALIN obj = new PALIN();
System.out.println(obj.palinNum(input));
}
}
}
如果您在Java上發佈問題,請使用* java *標記。 –
假設用戶輸入輸入字符串「ab」,那麼在第28行中,代碼試圖將字符串字符串解析爲不可能的整數if((Integer.valueOf(palin))>(Integer.valueOf S)))'。因此,請檢查您的代碼的邏輯,以便它也可以用於字母數字字符串。 – Karan