在java的输入中,定义了Scanner scanner,String str;

while((str=scanner.nextLine())!=null){str+=tempstr;}这个时候while的终止条件是什么,感觉是一个死循环,怎样才可以让... while((str=scanner.nextLine())!=null){
str+=tempstr;
}
这个时候while的终止条件是什么,感觉是一个死循环,怎样才可以让输入为null
求解释啊
展开
 我来答
zhouyuanlonglu
2012-04-16 · TA获得超过342个赞
知道小有建树答主
回答量:132
采纳率:100%
帮助的人:131万
展开全部
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);
}
追问
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();
}
呵呵记得认同哦。。。。
303767416
2012-04-16 · TA获得超过526个赞
知道小有建树答主
回答量:283
采纳率:66%
帮助的人:96.1万
展开全部
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);
}
}
}
追问
while(!((tempstr=stdin.readLine()).equals(null))){
str+=tempstr;
}
我用了这样的代码还是不行,一直在循环里,如果不要感叹号的话,就输入什么都是马上跳出
追答
while(!((tempstr=stdin.readLine()).equals(null))){
str+=tempstr;
}
原因分析:括号的嵌套不对,致使equals的作用被拦截在括号内。打个比方,你上面的嵌套得到的是以下效果:!(Object.isNull)。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式