java中的scanner问题 5
看看下面的部分代码:Scannersc=newScanner(System.in);while(sc.hasNext()){searchText=sc.next().to...
看看下面的部分代码:
Scanner sc=new Scanner(System.in);
while(sc.hasNext())
{
searchText=sc.next().toString();
System.out.println(searchText);
Student ss=SearchContact(s1,searchText);
if(ss.name==null)System.out.println("No <"+searchText+"> can be found in "+s1.name+"'s contact book");
else System.out.println(ss.toString());
我从键盘中读取输入字符串Marry,然后赋值给一个变量searchText,但是Student ss=SearchContact(s1,searchText);返回的却是一个缺省的student对象(若是找不到,返回缺省值的student对象),跳到执行if下面的语句,显然这不是我想要的结果。问题来了,在我还没添加键盘输入的时候,searchText的值被我hardcode成固定值“Marry”(查找对象中有Marry这个值),Student ss=SearchContact(s1,searchText);返回一个正确的结果,并执行else下面的语句。我想了很久想不明白,到底为什么。通过if下面的输出语句,可以显示searchText的值是Marry。谁能告诉我到底为什么。 展开
Scanner sc=new Scanner(System.in);
while(sc.hasNext())
{
searchText=sc.next().toString();
System.out.println(searchText);
Student ss=SearchContact(s1,searchText);
if(ss.name==null)System.out.println("No <"+searchText+"> can be found in "+s1.name+"'s contact book");
else System.out.println(ss.toString());
我从键盘中读取输入字符串Marry,然后赋值给一个变量searchText,但是Student ss=SearchContact(s1,searchText);返回的却是一个缺省的student对象(若是找不到,返回缺省值的student对象),跳到执行if下面的语句,显然这不是我想要的结果。问题来了,在我还没添加键盘输入的时候,searchText的值被我hardcode成固定值“Marry”(查找对象中有Marry这个值),Student ss=SearchContact(s1,searchText);返回一个正确的结果,并执行else下面的语句。我想了很久想不明白,到底为什么。通过if下面的输出语句,可以显示searchText的值是Marry。谁能告诉我到底为什么。 展开
4个回答
展开全部
您的问题是:“为什么输出语句可以显示searchText的值”对吗?
首先看您的代码
searchText=sc.next().toString();
searchText应该是一个String类型。
那么连接符+自动调用String类重写后的tostring方法,使得最终结果被拼接上字符串对象表示的值(还是字符串)。
首先看您的代码
searchText=sc.next().toString();
searchText应该是一个String类型。
那么连接符+自动调用String类重写后的tostring方法,使得最终结果被拼接上字符串对象表示的值(还是字符串)。
追问
我的问题是,searchText这个变量,以前是直接在代码上赋值为Marry,然后searchContact()这个函数可以返回正确的结果,但现在我把键盘输入(输入Marry)的结果赋值给serachText,但searchContact函数无法返回正确结果,后面有一个输入语句,输出searchText的值,显示为Marry。
追答
哦,您的SearchContact(s1,searchText);语句可以通过传入字符串返回一个student对象,对吗?您通过代码定义的字符串可以正常返回,但通过键盘录入却失败了,然而打印出来的值却是一样的,对吗?这可能是SearchContact判断的问题,您愿意加我q q吗?比较好说话:501172977
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
import java.util.Scanner;
public class Student {
private String name;
public Student(String name){
this.name = name;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public static Student SearchContact(Student s1,String searchText){
if(s1.getName() == "Marry"){
return s1;
}
return null;
}
public static void main(String[] args) {
Student s1 = new Student("Marry");
Scanner sc=new Scanner(System.in);
String searchText="";
while(sc.hasNext())
{
searchText=sc.next().toString();
System.out.println(searchText);
Student ss=SearchContact(s1,searchText);
if(ss.name==null)
System.out.println("No <"+searchText+"> can be found in "+s1.name+"'s contact book");
else
System.out.println(ss.toString());
}
}
}
我写了一个简单的。你看看有问题吗。
public class Student {
private String name;
public Student(String name){
this.name = name;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public static Student SearchContact(Student s1,String searchText){
if(s1.getName() == "Marry"){
return s1;
}
return null;
}
public static void main(String[] args) {
Student s1 = new Student("Marry");
Scanner sc=new Scanner(System.in);
String searchText="";
while(sc.hasNext())
{
searchText=sc.next().toString();
System.out.println(searchText);
Student ss=SearchContact(s1,searchText);
if(ss.name==null)
System.out.println("No <"+searchText+"> can be found in "+s1.name+"'s contact book");
else
System.out.println(ss.toString());
}
}
}
我写了一个简单的。你看看有问题吗。
追问
加好友,我给我的代码你看,太长贴不上来。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
2015-11-26
展开全部
先说一下语法 sc.next(),不需要toString()
为何返回缺省,要看SearchContact的代码了。。。。。。
为何返回缺省,要看SearchContact的代码了。。。。。。
追问
searchContact没问题的,我把searchText在代码里赋值成Marry就可以查找到结果,但我用键盘输入Marry作为查找条件,却查找不到结果。从if下面的输入语句可以看到,键盘输入的值赋给了searchText的输入结果是Marry。
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
2015-11-26
展开全部
求完整代码,看了半天没明白意思。。。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询