最后一个sysout不能显示字符串已更改,什么东西飞过我头上?
这会寻找某个字符的位置并将其从字符串中删除:
import java.util.Scanner;
public class Main {
public static int search(String ch, char x) {
int i;
for ( i = 0; i < ch.length(); i++) {
if (ch.charAt(i) == x) {
break;
}
}
return i;
}
public static void decal(int x, String A) {
for (int i = x; i < A.length() -1 ; i++) {
char a = A.charAt(i);
a = A.charAt(i +1);
}
char e = A.charAt(A.length()-1);
e = '\0';
}
public static void main(String[] args) {
System.out.println("donner une chaine");
String name;
Scanner sc = new Scanner(System.in);
name = sc.nextLine();
char w;
System.out.println("donner un caractere");
w = sc.next().charAt(0);
int val = search(name, w);
System.out.println("la position de la lettre " + w + " est "+ val);
decal(val, name);
sc.close();
System.out.println(name);
}
}
答案 0 :(得分:0)
真的,您根本不需要decal
方法,只需使用String.replace()方法将所需的字符替换为空字符即可。例如:
public static void main(String[] args) {
char w;
System.out.println("donner une chaine");
Scanner sc = new Scanner(System.in);
String name = sc.nextLine();
System.out.println("donner un caractere");
w = sc.next().charAt(0);
int val = search(name, w);
System.out.println("la position de la lettre " + w + " est "+ val);
name = name.replace(name.charAt(val)+"", ""); //replace old character (notice conversion to String) with empty String.
sc.close();
System.out.println(name);
}
运行search
方法后,我们知道了感兴趣的字符的位置,因此我们可以简单地使用replace()方法将该位置处的字符作为要替换的字符,然后将其转换为String ,并将空字符串作为新的替换。这将给出以下输出:
donner une chaine
hello
donner un caractere
e
la position de la lettre e est 1
hllo
我相信您希望使用类似的东西:
name = name.replace(name.charAt(val), '\0');
但是请注意,像这样,您将用出现的'\ 0'字符替换该字符(即它将是'h \ 0llo'),尽管在打印语句时不会看到它由于背景中发生的强制转换为String,因此输出看起来正确。如果需要,可以通过将更改后的String转换为charArray并检查其是否包含'\ 0'字符来轻松地进行检查。例如,简单检查:
String name1 = name.replace(name.charAt(val), '\0'); // h\0llo
String name2 = name.replace(name.charAt(val)+"", ""); // hllo
String name3 = name.replace(name.charAt(val)+"", "\0"); // h\0llo
System.out.print(name1.equals(name2)); //false
System.out.print(name1.equals(name3)); //true
因此,我建议使用给定的第一种方法(转换为String)。