好的,这是一个学校作业.我在进行递归二进制搜索时没有遇到任何问题,但是赋值明确指出该方法应该只接受2个参数,列表和您要搜索的项目.这是我有点失落的地方.
public int binarySearch(List<Card> cards, Card key)
{
int mid = (cards.size()) / 2;
if(cards.size() == 1) {
if(key.equals(cards.get(0))) {
return 0;
}
}
else {
if(key.equals(cards.get(mid))) {
return mid;
}
else if(key.compareTo(cards.get(mid)) == - 1) {
return binarySearch(cards.subList(0, mid), key);
}
else if(key.compareTo(cards.get(mid)) == 1) {
return mid + 1 + binarySearch(cards.subList(mid + 1, cards.size()), key);
}
}
return -1;
}
Run Code Online (Sandbox Code Playgroud)
所以这将工作正常,除非我正在搜索不存在的东西,它属于列表的上半部分.因为我只传递2个参数,所以我必须用每个递归调用更改列表,但是,如果它在上半部分我不能丢失我的索引点,所以我必须在那里添加递归调用,如果它最终不在上半部分然后它返回-1 +我之前考虑的所有那些索引.有没有办法可以清除它并使其返回-1?任何建议表示赞赏.
所以我有一个带有几个子菜单的JMenu.这些菜单的名称是通过获取4个玩家中的1个的名称来设置的.我向JMenu添加了一个MenuListener来使用更新这些名称
menu.setName(player.getName());
Run Code Online (Sandbox Code Playgroud)
但是,名称正在更改,但更新未显示在菜单中.如何让菜单更新它的显示?
editMenu.addMenuListener(new MenuListener() {
public void menuSelected(MenuEvent e) {
updateMenu();
}
public void menuDeselected(MenuEvent e) {
}
public void menuCanceled(MenuEvent e) {
}
});
Run Code Online (Sandbox Code Playgroud)
和updateMenu方法:
public void updateMenu()
{
partOneMenu.setName(Participant1.getName());
partTwoMenu.setName(Participant2.getName());
partThreeMenu.setName(Participant3.getName());
partFourMenu.setName(Participant4.getName());
partOneMenu.revalidate();
partTwoMenu.revalidate();
partThreeMenu.revalidate();
partFourMenu.revalidate();
System.out.println(partOneMenu.getName());
}
Run Code Online (Sandbox Code Playgroud)
print语句显示名称已更改.
我正在关注Liferay In Action书.我正处于将编辑模式添加到portlet的部分.portlet已成功部署,我已添加了portlet,现在该书说要单击portlet中的扳手并单击Preferences链接,但我没有Preferences链接.查看工作正常.
这是我的portlet.xml:
<?xml version="1.0"?>
<portlet-app xmlns="http://java.sun.com/xml/ns/portlet/portlet-app_2_0.xsd" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/portlet/portlet-app_2_0.xsd http://java.sun.com/xml/ns/portlet/portlet-app_2_0.xsd" version="2.0">
<portlet>
<portlet-name>hello-john</portlet-name>
<display-name>Hello John</display-name>
<portlet-class>com.liferaytest.portlet.HelloJohnPortlet</portlet-class>
<init-param>
<name>view-jsp</name>
<value>/view.jsp</value>
</init-param>
<init-param>
<name>edit-jsp</name>
<value>/edit.jsp</value>
</init-param>
<expiration-cache>0</expiration-cache>
<supports>
<mime-type>text/html</mime-type>
<portlet-mode>view</portlet-mode>
<portlet-mode>edit</portlet-mode>
</supports>
<portlet-info>
<title>Hello John</title>
<short-title>Hello John</short-title>
<keywords>Hello John</keywords>
</portlet-info>
<security-role-ref>
<role-name>administrator</role-name>
</security-role-ref>
<security-role-ref>
<role-name>guest</role-name>
</security-role-ref>
<security-role-ref>
<role-name>power-user</role-name>
</security-role-ref>
<security-role-ref>
<role-name>user</role-name>
</security-role-ref>
</portlet>
Run Code Online (Sandbox Code Playgroud)
我的edit.jsp:
<%@ taglib uri="http://java.sun.com/portlet" prefix="portlet" %>
<jsp:useBean class="java.lang.String" id="addNameURL" scope="request" />
<portlet:defineObjects />
<form
id ="<portlet:namespace />helloForm"
action="<%= addNameURL %>"
method="post">
<table>
<tr>
<td>Name:</td> …Run Code Online (Sandbox Code Playgroud)