Enter a number: 1234
Enter a digit you want to remove: 2
New Number: 34
IM仅删除第二个数字,但同时也删除了第一个
试图更改方法
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
@author Başar Ballıöz
int x = 0;
System.out.print("Enter a number ");
x = input.nextInt();
String number = Integer.toString(x);
System.out.print("Enter a digit you want to remove: ");
int a;
a = input.nextInt();
int new_number = Integer.parseInt(number.substring(a));
System.out.print("New Number: " + new_number);
}
我想看看:
Enter a number: 1234
Enter a digit you want to remove: 2
New Number: 134
答案 0 :(得分:1)
substring(a)
的结果是从第(a + 1)位数字到末尾的字符串。
您需要将字符串分成两部分。
第一部分是从头到要删除的数字的字符串(不包括)
,第二部分是要删除的数字之后的字符串。
然后重新加入2个字符串:
System.out.print("Enter a digit you want to remove: ");
int a;
a = input.nextInt();
String newString = number.substring(0, a - 1) + number.substring(a);
int new_number = Integer.parseInt(newString);
通过这种方式删除第(a + 1)位数字。
答案 1 :(得分:1)
您可以使用replace
,但它将替换所有出现的情况
返回一个新字符串,该字符串是通过用newChar替换此字符串中所有出现的oldChar的结果
replaceFirst 将仅替换首次出现的
用给定的替换替换该字符串的第一个子字符串,该子字符串与给定的正则表达式匹配。
int new_number = Integer.parseInt(number.replaceFirst(String.valueOf(a), ""));
答案 2 :(得分:0)
这是使用StringBuilder
(字符的可变集合)的好地方。另外,我更喜欢在使用时声明和初始化变量。喜欢,
Scanner input = new Scanner(System.in);
System.out.print("Enter a number ");
int x = input.nextInt();
StringBuilder sb = new StringBuilder(Integer.toString(x));
System.out.print("Enter a digit you want to remove: ");
int a = input.nextInt();
int new_number = Integer.parseInt(sb.replace(a, a + 1, "").toString());
System.out.print("New Number: " + new_number);
答案 3 :(得分:0)
您可以使用可变的StringBuilder
类。
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
int x = 0;
System.out.print("Enter a number ");
x = input.nextInt();
String number = Integer.toString(x);
StringBuilder sb = new StringBuilder(number);
System.out.print("Enter a digit you want to remove: ");
int a;
a = input.nextInt();
sb.deleteCharAt(a-1);
System.out.print("New Number: " + sb);
}