2017-02-14 89 views
-4

所以我做了我的第一个机器人在Java和IM非常满意我的结果 但我希望我的机器人更先进,所以我可以得到一些帮助!Java和机器人

继承人我的代码

 Robot a = new Robot(); 
    for (char C : "i like codding".toCharArray()){ 
     Thread.sleep(1000); 
    int n = KeyEvent.getExtendedKeyCodeForChar(C); 
    a.keyPress(n); 
    a.keyRelease(n); 

我想[我喜欢作弄]这个标志> <之间改变什么的。例如

 Robot a = new Robot(); 
    for (char C : char.matches("><").toCharArray()){ 
     c.replaceAll("><"," "); 
     Thread.sleep(1000); 
    int n = KeyEvent.getExtendedKeyCodeForChar(C); 
    a.keyPress(n); 
    a.keyRelease(n); 

所以你看它的错,我不知道为什么,我的想法是,我的机器人会读之间> <任何书面和重新改写。 举例:

! >例1 <

博特将键入:例1

+0

我认为你应该从更基本的东西开始比机器人。就像理解第一个代码中for循环的语法一样 - 然后理解为什么用char.matches(“><”)替换字符串是不可能的。 – RealSkeptic

+0

我认为它的字符串,这就是无关紧要,我知道循环...等等,我自己的问题是要理解它应该如何工作的逻辑 – Amod

+0

你可能想要提取'>'和'<'''_之前的字符串,也就是'String replaced = input.replaceAll(“。*>(。[^ <])<。*”,“$ 1”);'然后在您的循环中使用'replace'。请注意,这有点脆弱,例如如果输入中有多个'> text <''。你需要处理(这可能意味着根本不使用正则表达式)或确保输入始终满足要求。 – Thomas

回答

0

你的比赛方法是错误的用法。 matches()是一个字符串方法,它返回一个布尔值,判断序列是否出现在字符串中,使用正则表达式检查模式。现在你正在使用char.matches(“> <”),但是在char中没有这样的方法,因为它是一个基元,并且在对象Character中没有这样的方法。

你要找的是在循环之前使用匹配方法,并且看起来像是Thomas评论的正则表达式语句。更重要的是,您应该尝试着重学习一些基础知识,例如对象和基元之间的差异,循环结构,字符串操作和方法返回类型。这些都是简单的,但是构成编程基础的大型主题;像RealSkeptic说的那样,我建议从一个更简单的项目开始,并且为了增加这个功能,我建议您通过Oracle Java教程,它可以帮助你加快速度:Oracle Java Tutorial Here

+0

看到,即时使用循环和调用对象错误,因为我不知道这些案件的逻辑,我没有处理这个拼贴,我的意思是这些操纵。那就是为什么我要求它,我不明白这背后的逻辑。所以如果你善意地告诉我如何。先生<3,这会很好 – Amod