【新手入门】类与对象问题(带参)

时间:2022-04-27 20:11:55
请指出
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 下面的
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 下面的
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("没找到");
}
}