【问题标题】:Writing a main method for this search function为这个搜索功能写一个 main 方法
【发布时间】:2015-11-13 13:12:44
【问题描述】:

我需要一些关于如何为我正在编写的迷你搜索引擎编写主要方法的指针。这是我的代码:

public class StringSearch {   
    private String s1 = "ACTGACGCAG";
    private String s2 = "TCACAACGGG";
    private String s3 = "GAGTCCAGTT";

    public static void main(String[] args) {         
        System.out.println("Welcome!  The strings you started with are:\n" + s1 + "\n" + s2 + "\n" + s3);
    }

    public void search() {
        do {
            for(int i = 0; i < s1.length() - 4; i++) {
                int d = 0;
                String subStr = s1.substring(0 + i, 4 + i);
                do{ 
                    for (int iSub = 0; iSub < 4; i++){
                        if (subStr.charAt(iSub) != (subStr.charAt(iSub))) {
                            d += 1;
                        }
                    }
                }while(d < 2);
                if(s2.contains(subStr) && s3.contains(subStr)) {
                    System.out.println(subStr + "is in all 3 lists.");
                }
            }
        }while (s1.length() - 4 < 6);
        System.out.println("Task Complete.");        
    }
}

我的想法是我有一组 3 个字符串开始,我需要创建一个 4 个字符的子字符串并将其与所有 3 个字符串进行比较,以查看它是否包含在每个字符串中,至少 3/4字母匹配。例如,如果我取 s1 (ACTG) 的前 4 个字符,那么 'CCTG'、'ACAG'、'ACTA'、'AATG' 都是有效的搜索结果,会被返回。

我遇到的问题是主要方法。我究竟应该如何在语法上实例化搜索方法?我试过 StringSearch s1 = new StringSearch();然后是 s1.search();但没有得到任何结果。此外,当我尝试在 println 中引用原始字符串时,它说我无法从静态上下文中引用它们。这里是Java新手,非常感谢具体的帮助。

【问题讨论】:

  • 特别是,new StringSearch().search() 在你的 main 方法中是正确的;它不起作用的原因是您的实际 search 方法可能有问题。阅读链接。
  • 不要添加链接,因为这些链接随时可能下线。其他人将来将无法从中受益。
  • @GoyalVicky 该规则仅用于答案,这是一条评论,应该可以随时删除它们。此外,那是Eric Lippert's 博客,我希望它会存在一段时间。
  • @durron597 如果您可以提供博客的要点作为解决方案的一部分并提供参考,而不是在评论中提供第三方链接的解决方案,那会不会更好到那个博客,这样即使它离线,我们也有解决方案,以便将来其他人也可以从中受益。我的意思是这完全取决于你。

标签: java search syntax main-method


【解决方案1】:

您不能直接在静态方法中引用字段。首先,您需要像这样创建它的一个对象:-

public static void main(String[] args) {  
    StringSearch stringSearch = new StringSearch();
    stringSearch.search();
    System.out.println("Welcome!  The strings you started with are:\n" + stringSearch.s1 + "\n" + stringSearch.s2 + "\n" + stringSearch.s3);
}

对于搜索方法的问题,您需要调试您的方法。

步骤:-

  1. 如果您使用的是 eclipse,请双击左侧的行号或右键单击并选择切换断点以选择您希望主线程停止的位置。

  2. 右键单击程序并使用调试选项。

  3. 使用 F5、F6、F7 或 F8 键进行调试

F5 执行当前选定的行并转到程序中的下一行。如果选定的行是一个方法调用,调试器会进入相关代码。

F6 跳过调用,即它执行一个方法而不在调试器中单步执行。

F7 跳出到当前执行方法的调用者。这样就完成了当前方法的执行,返回给这个方法的调用者。

F8 告诉 Eclipse 调试器继续执行程序代码,直到到达下一个断点或观察点。

【讨论】:

  • 之前他的代码不能编译,但现在可以了。他需要调试他的搜索方法并根据它更正他的代码。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多