java 不能用replace

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java 不能用replace相关的知识,希望对你有一定的参考价值。

import java.util.Scanner;
public class justtry

public static void main (String args[])

Scanner sc=new Scanner(System.in);
sc=sc.replace("a","1");
System.out.println(sc);



上面是代码 编译时说

求大神指教错在哪里
菜鸟自学中 零基础 求轻喷

参考技术A Scanner类没有replace这个方法追问

Scanner 是用来读取输入数据的 那要适用replace的话 应该import哪个类呢 麻烦了~

追答

恩,另一个回答者回答的更加全面,你可以参考他的呢。
String 类不用import哦

追问

好的~太感谢了 谢谢对菜鸟的耐心~

参考技术B import java.util.Scanner;

public class justtry 
public static void main(String args[]) 
Scanner sc = new Scanner(System.in);
String s=sc.toString();
s = s.replace("a", "1");
System.out.println(s);

追问

大神!可以编译了 但是为什么运行出来是这样~

还有哪个toString 是什么啊 真的很菜 看不懂 可以可以麻烦解释一下

toString是不是转化为字符串啊 但是出来真的是一对乱码诶 看不懂了

追答import java.util.Scanner;

public class justtry 
public static void main(String args[]) 
Scanner sc = new Scanner(System.in);
String s=sc.nextLine();
s = s.replace("a", "1");
System.out.println(s);

replace 是String类的方法

s是获取键盘输入的字符串

replace("a", "1") 将s中的a替换成1

追问

多谢大神!果然解决了!那么我想实现这样的功能的话
。。。前面都不变。。。后面改成

s = s.replaceit();//就是想在这里调用一个类

private void replaceit()

s=s.replace("a", "1");
s=s.replace("b", "1");

求问一下 这样的方法错在哪里啊 多谢大神的耐心 太感谢了~

追答import java.lang.reflect.Method;
import java.util.Scanner;
import org.omg.CORBA.OBJ_ADAPTER;
public class justtry 
public static void main(String args[]) 
Scanner sc = new Scanner(System.in);
String s = sc.nextLine();
s = replaceit(s);
System.out.println(s);

private static <T extends Object> T replaceit(T s) 
try 
Method method = String.class.getMethod("replace", new Class[] 
java.lang.CharSequence.class, java.lang.CharSequence.class );
s = (T) method.invoke(s, "a", "1");
s = (T) method.invoke(s, "b", "1");
System.out.println("......");
 catch (Exception e) 
e.printStackTrace();

return s;

本回答被提问者采纳

java中的string类中内容一旦被初始化就不能改变为啥还有replace方法呢?

内容被初始化了但是还有replace方法改变内容 ,怎样解释这种情况啊?多谢

replace虽然没有改变原字符串,但是replace返回了新的字符串。
其过程:取原字符串值取出放入内存中,替换生成一个新的字符串,返回新字符串,从而得到了两个字符串。

另:Java中的String类是声明为final的,一旦建立String对象之后它的值的内容是无法修改的,但是StringBuffer类弥补了String类的不足,StringBuffer类的内容可以修改。
参考技术A replace方法并不能改变字符串本身的,只是replace方法能返回一个处理后的字符串而已,例如:
String s="hello";
System.out.println(s.replace("h","H"));
System.out.println(s);
输出结果:
Hello
hello本回答被提问者采纳
参考技术B replace是返回了一个新的字符串,
String aaa = "aaa";
String bbb = aaa.replace("a","b");
后aaa="aaa" ,bbb="bbb"
参考技术C 返回的是一个新的字符串
Returns a new string resulting from replacing all occurrences of
oldChar in this string with newChar

src : return new String(0, len, buf);

以上是关于java 不能用replace的主要内容,如果未能解决你的问题,请参考以下文章

java 提示符命令不能用,怎么办?

java 不能用replace

求编个java程序要求:编写一个求大数的阶乘,不能用biginteger,并且使用数组不能浪费,不

java中interface不能用啥修饰符来修饰

如何处理应用程序级别的“值'0000-00-00'不能表示为java.sql.Timestamp”错误?

配置java环境变量导致cmd不能用了