在java的输入中,定义了Scanner scanner,String str;
while((str=scanner.nextLine())!=null){str+=tempstr;}这个时候while的终止条件是什么,感觉是一个死循环,怎样才可以让...
while((str=scanner.nextLine())!=null){
str+=tempstr;
}
这个时候while的终止条件是什么,感觉是一个死循环,怎样才可以让输入为null
求解释啊 展开
str+=tempstr;
}
这个时候while的终止条件是什么,感觉是一个死循环,怎样才可以让输入为null
求解释啊 展开
2个回答
展开全部
java中基本类型与引用类型来说:
相等性的比较(==):
1> 对于原生数据类型来说,比较的是左右两边的值是否相等。
2> 对于引用类型来说,比较左右两边的引用时指向同一个对象。或者说左右两边的引用地址是否相同。
equals()方法,该方法定义在Object类中,因此在java中每一个对象都具有该方法,对于Object类的equals方法来说。它是判断调用equals()方法的引用与传进来的引用是否一致。即是这两个引用是否指向同一个对象。对于Object来说,equals方法他等价与==。
在String类中,String类型是引用类型,他重写了Object类型的toString和equals方法。
对于String类型来说,equals()方法它是判断当前字符串与传进来的字符串的内容是否一致。
1.对于String对象的相等性判断来说,请使用equals()方法,而不要使用==。
所以应该写为:
String str="";
Scanner scanner=new Scanner(System.in);
string=scanner.nextLine();
while(string.equals(null)) {
System.out.println(string);
}
相等性的比较(==):
1> 对于原生数据类型来说,比较的是左右两边的值是否相等。
2> 对于引用类型来说,比较左右两边的引用时指向同一个对象。或者说左右两边的引用地址是否相同。
equals()方法,该方法定义在Object类中,因此在java中每一个对象都具有该方法,对于Object类的equals方法来说。它是判断调用equals()方法的引用与传进来的引用是否一致。即是这两个引用是否指向同一个对象。对于Object来说,equals方法他等价与==。
在String类中,String类型是引用类型,他重写了Object类型的toString和equals方法。
对于String类型来说,equals()方法它是判断当前字符串与传进来的字符串的内容是否一致。
1.对于String对象的相等性判断来说,请使用equals()方法,而不要使用==。
所以应该写为:
String str="";
Scanner scanner=new Scanner(System.in);
string=scanner.nextLine();
while(string.equals(null)) {
System.out.println(string);
}
追问
while(!((tempstr=stdin.readLine()).equals(null))){
str+=tempstr;
}
我用了这样的代码还是不行,一直在循环里,如果不要感叹号的话,就输入什么都是马上跳出
追答
String string;//这是局部变量没有默认初始值,他不是null。
Scanner scanner=new Scanner(System.in);
string=scanner.nextLine();
while(!string.equals("")) {//这里我忘记加“!”了,你是不是判断他没有满足就退出啊。null与"" 是不同的,如果string是null的话,就抛空指针异常。所以我们只能用""来作为判断条件。
System.out.println(string);
string=scanner.nextLine();
}
呵呵记得认同哦。。。。
展开全部
public class Te1 {
public static void main(String[] args){
String str = "";
Scanner scanner = new Scanner(System.in);
//很简单,用我的试试,java为我们提供了 equals 作为String的校对
while((str=scanner.nextLine()).equals(null)){
System.out.println("str ==" +str);
}
}
}
public static void main(String[] args){
String str = "";
Scanner scanner = new Scanner(System.in);
//很简单,用我的试试,java为我们提供了 equals 作为String的校对
while((str=scanner.nextLine()).equals(null)){
System.out.println("str ==" +str);
}
}
}
追问
while(!((tempstr=stdin.readLine()).equals(null))){
str+=tempstr;
}
我用了这样的代码还是不行,一直在循环里,如果不要感叹号的话,就输入什么都是马上跳出
追答
while(!((tempstr=stdin.readLine()).equals(null))){
str+=tempstr;
}
原因分析:括号的嵌套不对,致使equals的作用被拦截在括号内。打个比方,你上面的嵌套得到的是以下效果:!(Object.isNull)。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询