import java.io.*;public class Change
{
public String readline()
{
try{
FileReader file = new FileReader("change.txt");
StringBuffer buf = new StringBuffer();
char inChar;
int in=0;
do{
in = file.read();
inChar = (char)in;
if(in != -1)
buf.append(inChar);
}while((inChar != '\n') && (in != -1));
file.close();
return buf.toString();
}catch(FileNotFoundException fnfe){
System.out.println("FileNotFoundException: "+fnfe.getMessage());
return null;
}catch(IOException ioe){
System.out.println("Exception: "+ioe.getMessage());
return null;
}
}
public void anly(String str){
String word = "";
char inChar;
int i=0;
StringBuffer buf = new StringBuffer();
while(i<str.length()){
inChar = str.charAt(i);
if((inChar != ' ') && (inChar != '\n'))
buf.append(inChar);
else
{
word = buf.toString();
buf = new StringBuffer();
}
if(word == "hate")
{
word ="love";
System.out.print(word+"");
}else
{
System.out.print(word+"");
word = "";
}
i++;
}
}
public static void main(String[] args)
{
Change chan = new Change();
String line;
line=chan.readline();
System.out.println(line);
chan.anly(line);
}
}
chang.txt文件中是I hate you.
这程序是想把hate用love替代掉,然后输出句子不过不知道为什么没作用
{
public String readline()
{
try{
FileReader file = new FileReader("change.txt");
StringBuffer buf = new StringBuffer();
char inChar;
int in=0;
do{
in = file.read();
inChar = (char)in;
if(in != -1)
buf.append(inChar);
}while((inChar != '\n') && (in != -1));
file.close();
return buf.toString();
}catch(FileNotFoundException fnfe){
System.out.println("FileNotFoundException: "+fnfe.getMessage());
return null;
}catch(IOException ioe){
System.out.println("Exception: "+ioe.getMessage());
return null;
}
}
public void anly(String str){
String word = "";
char inChar;
int i=0;
StringBuffer buf = new StringBuffer();
while(i<str.length()){
inChar = str.charAt(i);
if((inChar != ' ') && (inChar != '\n'))
buf.append(inChar);
else
{
word = buf.toString();
buf = new StringBuffer();
}
if(word == "hate")
{
word ="love";
System.out.print(word+"");
}else
{
System.out.print(word+"");
word = "";
}
i++;
}
}
public static void main(String[] args)
{
Change chan = new Change();
String line;
line=chan.readline();
System.out.println(line);
chan.anly(line);
}
}
chang.txt文件中是I hate you.
这程序是想把hate用love替代掉,然后输出句子不过不知道为什么没作用
String word = "";
char inChar;
int i=0;
StringBuffer buf = new StringBuffer();
while(i <str.length()){
inChar = str.charAt(i);
if((inChar != ' ') && (inChar != '\n'))
buf.append(inChar);
else
{
word = buf.toString();
buf = new StringBuffer();
}
if(word == "hate")
{
word ="love";
System.out.print(word+"");
}else
{
System.out.print(word+"");
word = "";
}
i++;
}
}
红色部分,两个字符串比较,要用equals。改为if(word.equals("hate"))
我来补充原因:== 比较的是两个变量或者对象的地址值是否相等,equals()比较的则是他们的内容值是否相等。
LS说的都对,当你要比较两字符串是否一样的时候,就应该首先选用equals()
而==比较的是两引用(也就是你定义的变量)是否指向同一对象
不过我原来也怀疑这里错了,所以写了下面这个程序试了下,好像“==”也可以的啊class Compar
{
public static void main(String[] args)
{
String str1 = "hate";
if(str1 == "hate")
str1 = "love";
else
str1 = "haha";
System.out.println(str1);
}
}
输出是love
这是因为==比较的时引用的地址,但是这个其实比不是比较String内容
比较String变量是否相等因该用String.equals()
而你的问题里面红色部分word并不是由字符串常量赋值得到的,和"hate"不是同一个对象,只是值相等,只能用equals。
word == "hate",你这样比较的是两个String对象