1.我的代码问题
2.我的概念混淆的地方
3.应该进一步掌握的知识点
4.MY ECLIPSE的插件 提示显示的那种
***效果如下:***
请输入学生姓名:张三
继续输入吗?(Y/N):Y
请输入学生姓名:李四
继续输入吗?(Y/N):N
***********************
客户姓名列表
***********************
张三 李四
请输入要查找的客户姓名:张三
****查找结果****
找到了!
===================================================================
我的StudentsBiz类代码:
public class StudentsBiz {
String[] names=new String[30];
public void addName(String name){
for(int i=0;i<names.length;i++){
if (names[i]==null){
names[i]=name;
break;
}
}
}
public void showNames(){
for(int i=0;i<names.length;i++){
System.out.print(names[i]+"\t");
}
}
}
====================================================================================
我的SearchName类代码:
public class SearchName {
boolean find=true;
String[] names=new String[30];
public void search(String name){
for(int i=0;i<names.length;i++){
if (names[i]!=searchName){
find=true;
break;
}
}
if (find){
System.out.println("找到了");
}else{
System.out.println("没找到");
}
}
}
=============================================================================
我的测试代码:
import java.util.Scanner;
public class TestAdd {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
Scanner in=new Scanner(System.in);
StudentsBiz st=new StudentsBiz();
SearchName st1=new SearchName();
boolean flag=true;
while(flag){
System.out.print("请输入学生姓名:");
String newName=in.next();
System.out.print("继续输入吗?(y/n)");
char choice=in.next().charAt(0);
if(choice=='n'){
flag=false;
}
st.addName(newName);
}
st.showNames();
System.out.println("\n请输入要查找的客户姓名:");
String searchName=in.next();
System.out.println("*******查找结果*******");
st1.search(searchName);
}
}
2 个解决方案
#1
楼主的设计上有点问题,姓名的添加在 StudentsBiz,但搜索在 SearchName,建议楼主将 SearchName 下面的
移动至 StudentsBiz 类里面,testAdd 修改为
boolean find=true;
public void search(String name){
for(int i=0;i<names.length;i++) {
if (names[i] != name) {
find=true;
break;
}
}
if (find){
System.out.println("找到了");
}else{
System.out.println("没找到");
}
}
移动至 StudentsBiz 类里面,testAdd 修改为
public class TestAdd {
public static void main(String[] args) {
Scanner in=new Scanner(System.in);
StudentsBiz st=new StudentsBiz();
boolean flag=true;
while(flag){
System.out.print("请输入学生姓名:");
String newName=in.next();
System.out.print("继续输入吗?(y/n)");
char choice=in.next().charAt(0);
if(choice=='n'){
flag=false;
}
st.addName(newName);
}
st.showNames();
System.out.println("\n请输入要查找的客户姓名:");
String searchName=in.next();
System.out.println("*******查找结果*******");
st.search(searchName);
}
}
#2
再修改一点,保证功能可以跑起来
boolean find=false;
public void search(String name){
for(int i=0;i< names.length;i++) {
// if (names[i].equals(name)) { // names[i] 可能为null,会抛空指针
if (name.equals(names[i])) { // 这样就不会了
find=true;
break;
}
}
if (find){
System.out.println("找到了");
}else{
System.out.println("没找到");
}
}
#1
楼主的设计上有点问题,姓名的添加在 StudentsBiz,但搜索在 SearchName,建议楼主将 SearchName 下面的
移动至 StudentsBiz 类里面,testAdd 修改为
boolean find=true;
public void search(String name){
for(int i=0;i<names.length;i++) {
if (names[i] != name) {
find=true;
break;
}
}
if (find){
System.out.println("找到了");
}else{
System.out.println("没找到");
}
}
移动至 StudentsBiz 类里面,testAdd 修改为
public class TestAdd {
public static void main(String[] args) {
Scanner in=new Scanner(System.in);
StudentsBiz st=new StudentsBiz();
boolean flag=true;
while(flag){
System.out.print("请输入学生姓名:");
String newName=in.next();
System.out.print("继续输入吗?(y/n)");
char choice=in.next().charAt(0);
if(choice=='n'){
flag=false;
}
st.addName(newName);
}
st.showNames();
System.out.println("\n请输入要查找的客户姓名:");
String searchName=in.next();
System.out.println("*******查找结果*******");
st.search(searchName);
}
}
#2
再修改一点,保证功能可以跑起来
boolean find=false;
public void search(String name){
for(int i=0;i< names.length;i++) {
// if (names[i].equals(name)) { // names[i] 可能为null,会抛空指针
if (name.equals(names[i])) { // 这样就不会了
find=true;
break;
}
}
if (find){
System.out.println("找到了");
}else{
System.out.println("没找到");
}
}