Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ssl/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 对于我选择的名称,在arraylist中将布尔值设置为inactive,然后将它们存储在另一个数组中?_Java_Arrays_Arraylist_Store - Fatal编程技术网

Java 对于我选择的名称,在arraylist中将布尔值设置为inactive,然后将它们存储在另一个数组中?

Java 对于我选择的名称,在arraylist中将布尔值设置为inactive,然后将它们存储在另一个数组中?,java,arrays,arraylist,store,Java,Arrays,Arraylist,Store,我会尽量简短地解释代码。。我有一个arraylist,其中包含.txt文件中的成员。在这个文件中,我首先使用布尔值将所有成员设置为活动的“true”。我想做的是使用一个方法,将一个字符串中的名字(我想将.txt文件中的人的名字设置为inactive)设置为非活动(false),然后将该人存储在另一个数组中,并可能将其从活动列表中删除,以便它不包含非活动成员 我就是这样开始的 public static void inActivateName(ArrayList<Member> reg

我会尽量简短地解释代码。。我有一个arraylist,其中包含.txt文件中的成员。在这个文件中,我首先使用布尔值将所有成员设置为活动的“true”。我想做的是使用一个方法,将一个字符串中的名字(我想将.txt文件中的人的名字设置为inactive)设置为非活动(false),然后将该人存储在另一个数组中,并可能将其从活动列表中删除,以便它不包含非活动成员

我就是这样开始的

public static void inActivateName(ArrayList<Member> register, String name) {
    String s = "";
    int counter = 0;
    for(Member m : register) {
        if(m.getFullName().equals(name)) {
            s += (m) + "\n" ;
            counter++;
        }
    } 
    if(counter < 2) {
        System.out.println("Found the name " + name);
        System.out.println("Do you really want to inactivate" + name + " ? " + " (Y/N) ");
        svar = lasaIn.nextLine();
    } else if(svar.equals("Y")) {
            // Inacivate member ? ? ? 
    } else if(svar.equals("N")) {
        System.out.println("Returning to the main menu");
        Menu.mainMenu();    
    }  else {
    System.out.println("Found the name " + name + " " + counter + " times");
    System.out.println(s);
    System.out.println("Which member do you want to inactivate? (choose by id) ");
    // inActivateId(?) not the problem 
    }
}
构造函数执行以下操作:isActive=true


我真的不知道如何解决这个问题,任何帮助都非常感谢

有一个临时对象,当名称匹配被命中时,它被设置为当前迭代对象。只需在您指定的块中列出.remove(name)和tempObj.isActive=false。

为您的成员活动性创建一个setter:

public void setActive(boolean active) {
  this.active = active;
}

public boolean isActive(){
  return this.active;
}
现在为您的代码设计提供一个建议:

制作一张
地图
。外部映射是按名称命名的成员组。内部映射是按id的成员。通过这种方式,您可以真正简化代码:

public static void inActivateName(Map<String,Map<String, Member>> activeMembers, Map<String,Map<String, Member>> inactiveMembers, String name) {
    Map<String, Member> members = activeMembers.get(name);
    if(members != null)
       System.out.println("Found" + members.size() + " members with the name " + name);
       System.out.println("Do you really want to inactivate" + name + " ? (Y/N)";
       String svar = lasaIn.nextLine();
       if(svar.equals("Y")) {
            System.out.println("Which member do you want to inactivate? (choose by id)");
            svar = lasaIn.nextLine();
            Member member = members.get(svar);
            if(member == null) {
               System.out.println("No such id " + svar);
            } else{
               member.setActive(false);
               System.out.println("Member with name " + name + " and id " + svar + " inactivated");
               activeMembers.remove(svar);
               if(inactiveMembers.get(name) == null){
                  inactiveMembers.put(name, new HashMap<String,Member>());
               }
               inactiveMembers.get(name).put(svar, member);
            }
       }
    } else {
      System.out.println("No such name.");
    }


    System.out.println("Returning to the main menu");
    Menu.mainMenu();
}
publicstaticvoidinactiveName(映射activeMembers、映射inactiveMembers、字符串名){
Map members=activeMembers.get(name);
如果(成员!=null)
System.out.println(“找到”+成员.size()+”名为“+名称”的成员);
System.out.println(“您真的想停用“+name+”?(是/否)”;
字符串svar=lasaIn.nextLine();
如果(svar等于(“Y”)){
System.out.println(“您希望停用哪个成员?(按id选择)”;
svar=lasaIn.nextLine();
Member=members.get(svar);
if(成员==null){
System.out.println(“无此类id”+svar);
}否则{
成员.setActive(false);
System.out.println(“名为“+name+”且id为“+svar+”未激活的成员”);
activeMembers.remove(svar);
if(inactiveMembers.get(name)==null){
put(name,new HashMap());
}
inactiveMembers.get(name).put(svar,member);
}
}
}否则{
System.out.println(“没有这样的名称”);
}
System.out.println(“返回主菜单”);
Menu.main Menu();
}

本示例旨在说明如何在场景中更好地使用贴图,但它并不完美。如果您决定使用此概念,则进行重构可能是明智之举。

我希望下面的解决方案适合您

import java.util.*;
public class HelloWorld{

     public static void main(String []args){
        ArrayList<String> active=new ArrayList<String>();
        active.add("person1");
        active.add("person2");
        active.add("person3");
        ArrayList<String> inactive=new ArrayList<String>();
        deactive("person2",active,inactive);
        System.out.println(active);
        System.out.println(inactive);

     }
     public static void deactive(String person, ArrayList active, ArrayList inactive)
     {
     if(active.contains(person))
     {
        active.remove(person);
        inactive.add(person);
     }
     }
}
import java.util.*;
公共类HelloWorld{
公共静态void main(字符串[]args){
ArrayList active=新的ArrayList();
激活。添加(“人员1”);
激活。添加(“人员2”);
激活。添加(“人员3”);
ArrayList inactive=新的ArrayList();
不活跃(“人2”,活跃,不活跃);
系统输出打印项次(活动);
系统输出打印项次(非活动);
}
public static void deactive(字符串person、ArrayList active、ArrayList inactive)
{
如果(活动。包含(人))
{
主动。移除(人);
不活动。添加(人);
}
}
}
如您所见,我有两个arraylist active和inactive。最初,所有人员都存储在active arraylist中,inactive arraylist为空。然后我调用一个函数,发送要从active Array中删除的人员的姓名。调用该函数后,我打印了两个arraylist。您可以看到ar person将从活动arraylist中删除并添加到非活动arraylist中

我希望有帮助

import java.util.*;
public class HelloWorld{

     public static void main(String []args){
        ArrayList<String> active=new ArrayList<String>();
        active.add("person1");
        active.add("person2");
        active.add("person3");
        ArrayList<String> inactive=new ArrayList<String>();
        deactive("person2",active,inactive);
        System.out.println(active);
        System.out.println(inactive);

     }
     public static void deactive(String person, ArrayList active, ArrayList inactive)
     {
     if(active.contains(person))
     {
        active.remove(person);
        inactive.add(person);
     }
     }
}