我编写了这段代码,意图是每次recurse()调用链都会增加.然而,它(从我用调试器看到的)每次recurse()到达返回值时都会这样做,它会递减值b.如果您想了解我正在尝试做的事情,那么这就是项目征集#14.
http://projecteuler.net/problem=14
private static void euler14()
{
int currentstart=1000000;
int longest = 0;
int current=0;
Integer chain=0;
for(int i = currentstart; i>0; i--)
{
recurse(i,chain);
if(chain > current)
{
current=chain;
longest=i;
}
chain = 0;
}
System.out.print("Euler 14: " + longest + "\n");
}
private static void recurse(int a, Integer b)
{
b++;
if(a==1)
{
return;
}
else if(a%2==0)
{
recurse((a/2), b);
}
else if(a%2==1)
{
recurse(((a*3)+1), b);
}
return;
}
Run Code Online (Sandbox Code Playgroud) 我正在进行Java练习,无法弄清楚我做错了什么.我创建了一个Movie类(带有变量:rating,title,movieId和FEE_AMT的常量),然后使用:Action,Comedy和Drama扩展了类.这些派生类没有其他变量,只有不同的FEE_AMT.
在Movie(和派生类)中,有一种方法可以计算到期的滞纳金:
/**
* Returns the late fee due on a Movie rental
* @param days the number of days for late fee calculations
* @return true or false depending on the evaluation of the expression
**/
public double calcLateFees(int days){
return(days * FEE_AMT);
}
Run Code Online (Sandbox Code Playgroud)
如果我只是直接用对象调用方法,例如:comedy1.calcLateFees(2) - 它将根据派生方法中的不同常量值生成正确的费用金额.
现在我需要创建一个Rental类并main()创建一个类型租赁类的数组来保存Rental对象(由Movie对象,renterId和daysLate组成).以下是接收Rental对象数组的方法,并返回数组中所有租借的滞纳金:
/**
* lateFeesOwed returns the amount of money due for late fees on all movies
* which are located in an array of Rentals.
*
* …Run Code Online (Sandbox Code Playgroud) 我正在尝试编写一种方法来搜索二叉树的所有节点以获取传递的值,并在找到时返回该节点.我似乎无法正确地搜索树的两侧.这是我到目前为止所拥有的.
private Node locate(String p, Node famTree)
{
if (root == null)//If tree empty return null;
return null;
if (famTree.value.equals(p)) //If leaf contains the passed parent value the boolean becomes true.
return famTree;
if (famTree.left != null)
return locate(p,famTree.left);
else
return locate(p,famTree.right);
}
Run Code Online (Sandbox Code Playgroud) 想象一下这样的情况:我有一个HashMap<Integer, String>,我在其中存储连接的客户端。是的HashMap,因为顺序无关紧要,我需要速度。它看起来像这样:
{
3: "John",
528: "Bob",
712: "Sue"
}
Run Code Online (Sandbox Code Playgroud)
大多数客户端断开连接,所以这就是为什么我有很大的差距。如果我想添加一个新客户端,我需要一个密钥,显然_map.size()获取密钥的用法是不正确的。
所以,目前我使用这个函数来获取最低可用键:
private int lowestAvailableKey(HashMap<?, ?> _map) {
if (_map.isEmpty() == false) {
for (int i = 0; i <= _map.size(); i++) {
if (_map.containsKey(i) == false) {
return i;
}
}
}
return 0;
}
Run Code Online (Sandbox Code Playgroud)
在某些情况下,这真的很慢。有没有更快或更专业的方法来获得 a 的最低自由键HashMap?
我有以下代码片段,其中'b'是整数数组,MAX是整数,整数'ans'存储结果.我正在调试一些代码,因为我使用Java,所以对C++不是很熟悉.C++代码是:
for(i=0; i<MAX; i++)
ans+=(b[i]!=-1);
Run Code Online (Sandbox Code Playgroud)
我理解它的方式如下:
for(int i=0;i<MAX;i++)
if(b[i]!=-1)
ans+=b[i];
Run Code Online (Sandbox Code Playgroud)
但是,我对上面的逻辑得到了一个荒谬的答案.这句话到底意味着什么?
我需要将AWS DYNAMODB JSON转换为标准JSON对象。因此我可以从DynamoDB JSON中删除数据类型,例如:
在DYNAMODB JSON中:
"videos": [
{
"file": {
"S": "file1.mp4"
},
"id": {
"S": "1"
},
"canvas": {
"S": "This is Canvas1"
}
},
{
"file": {
"S": "main.mp4"
},
"id": {
"S": "0"
},
"canvas": {
"S": "this is a canvas"
}
}
]
to Standard JSON
"videos": [
{
"file": "file1.mp4"
,
"id": "1"
,
"canvas": "This is Canvas1"
,
"file": "main.mp4"
,
"id": "0"
,
"canvas": "this is a canvas"
}
]
Run Code Online (Sandbox Code Playgroud)
我在Javascript中找到了一个不错的工具,但是Java中是否有任何工具可以做到这一点?
Re:要求在Event-Dispatch Thread上创建Swing对象.
我正在开发一个应用程序,其目的是监视和显示各种远程嵌入式服务器的状况.我是Java的新手,我对Swing对象和EDT的要求的理解是不完整的.
主GUI在EDT上以通常的方式启动,如下所示,
javax.swing.SwingUtilities.invokeLater(new Runnable() {
public void run() {
createAndShowGUI();
}
});
Run Code Online (Sandbox Code Playgroud)
然后,用户可以选择与一个或另一个远程机器相对应的一个或多个菜单选项.这样做的效果是每次都创建一个新线程,如下所示
new Thread(new VoterStatus(itemNumber)).start();
Run Code Online (Sandbox Code Playgroud)
它调用VoterStatus的类"run"方法,该方法又创建一个带有JFrame的新窗口.新线程(VoterStatus类的一个实例)然后询问(TCP等)指定的特定远程(itemNumber),收集各种信息并在JFrame中显示它们.
可能有任意数量的此类线程对应于VoterStatus的实例,所有这些都更新了自己的窗口.这些不同的窗口/ JFrame /任务之间没有数据共享.
这似乎工作得很好,但是安全吗?
我是否违反了有关在EDT上创建Swing组件的规则?
使用SwingWorker类会有益吗?
我要感谢Java程序员在这些问题上更有经验的任何评论.
谢谢Steve
我刚读过这篇文章服务S =新服务时代() - 为什么你这样做?
想知道你对它的看法..想知道除了impl之外你会命名它吗?
所以我和朋友正在研究这个项目,我们一直在试图弄清楚如何从XML文件中的单个文本节点中提取值.他能够提出一些代码来提取我们正在寻找的文本节点,但是有一个小问题.当我运行以下代码时,它工作正常,并提取我们需要的...
JAVA CODE
import java.io.File;
import org.xml.sax.*;
import org.xml.sax.helpers.DefaultHandler;
import javax.xml.parsers.SAXParser;
import javax.xml.parsers.SAXParserFactory;
public class Test extends DefaultHandler
{
StringBuffer buffer;
String heading;
boolean inHeading;
public static void main(String[] args)
{
try
{
Test saxNames = new Test();
SAXParser parser = SAXParserFactory.newInstance().newSAXParser();
parser.parse(new File("C:/Documents and Settings/user/workspace/Intern Project/Proposals/Converted Proposals/Extracted Items/ProposalOne.docx - Extracted Items/word/document.xml"), saxNames);
}
catch(Exception e)
{
e.printStackTrace(System.err);
}
}
public void startElement(String uri, String localName, String qName, Attributes attrs)
{
if ("w:pStyle".equals(qName))
{
String val = attrs.getValue("w:val");
if (val.contains("Heading")) …Run Code Online (Sandbox Code Playgroud) 我有一个环境,其中字符串由Actionscript escape()函数编码百分比,然后传递给Java进行解码.
我有一个测试字符串"m é".
它传递给Actionscript escape(),"m%20%E9"
当我尝试用Java解码它时输出:
URLDecoder.decode("m%20%E9", "UTF-8")
Run Code Online (Sandbox Code Playgroud)
结果是:
"m ?"
Run Code Online (Sandbox Code Playgroud)
%E9似乎是"é"字符的unicode点,但Java解码并不十分清楚.
有没有办法在Java中解码由Actionscript escape()编码的字符串?这些函数使用什么转义格式,因为它们看起来有所不同?
感谢
Paolo先生的任何帮助