例如,我有一个字符串“-234254365356”。现在我想获得最后4位数的符号,这样我就有了“-5356”。我该怎么做?
如何有效地为正整数做到这一点。
以下是我的代码。它适用于少数整数。但是,如果我开始以String形式输入大量的大整数,tt会返回错误。
我正在读取TXT文件,s
变量是扫描仪。
try{
s = new Scanner(new BufferedReader(new FileReader(inputTxt)));
while(s.hasNext()){
ArrayList<Character> integer = new ArrayList<Character>();
number = s.next();
int i = 0;
if (number.charAt(0) == '-'){
integer.add(0, '-');
while(i < 7){
i++;
integer.add(number.charAt(number.length()-i));
}
}else{
while(i < 7){
integer.add(number.charAt(number.length()-1-i));
i++;
}
}
String disectedInteger = getStringRepresentation(integer);
dataList.add(Integer.parseInt(disectedInteger));
integer.clear();
}
}catch(FileNotFoundException e){
e.printStackTrace();
}catch(IOException e){
e.printStackTrace();
}catch(ArrayIndexOutOfBoundsException e){
e.printStackTrace();
}finally{
if(s != null) s.close();
}
答案 0 :(得分:0)
您的原始代码可简化如下:
ArrayList<Character> integer = new ArrayList<Character>();
String number = s.next();
if (number.charAt(0) == '-') {
integer.add('-');
}
// Note: this assumes inputs are at least four characters long
for (int i = number.length() - 4; i < number.length(); i++) {
integer.add(number.charAt(i));
}
更好的方法是放弃你的角色列表并转移到字符串构建器:
String number = s.next();
StringBuilder builder = new StringBuilder();
if (number.charAt(0) == '-') {
builder.append('-');
}
builder.append(number.substring(number.length() - 4));
int value = Integer.parseInt(builder.toString());
或者,正如评论中所建议的那样,您可以使用以下方法获得相同的最终结果:
Long.parseLong(number) % 10000
如果数字too large包含在long中,则此方法将失败。