【问题标题】:How to pass a String parameter to a void method? [duplicate]如何将字符串参数传递给 void 方法? [复制]
【发布时间】:2023-03-12 09:11:02
【问题描述】:

我需要为我正在学习的一门课程编写一个 Java 程序,该程序在 DNA 链中寻找基因。我遇到的问题是,从测试方法中,我需要将 printAllgenes(a) 传递给 void printAllgenes 方法。在测试方法中,我尝试将“int a”设置为“String a”,但无论哪种情况,编译时都会出错,解释 void 无法转换为 int 或 String。我确信这很明显,但我对编程很陌生,所以请原谅我的无知!谢谢。

import java.io.*;
import edu.duke.*;

public class FindProtein {

  public void test() {
    String a = "atg aaa tab tag atg aaa tga aat ag";
    int b = printAllgenes(a);
    System.out.println("DNA string is " + a);
    System.out.println("Gene found is " + b);
  }

  public void printAllgenes(String dna) {
    int sp = 0; //start point
    while (true) {
      int start = dna.indexOf("atg,sp");
      if (start == -1) {
        break;
      }
      int stop = findStopIndex(dna, start + 3);
      if (stop != dna.length()) {
        System.out.println(dna.substring(start, stop + 3));
        sp = stop + 3;
      } else {
        sp = sp + 3;
      }
    }
  }

  public int findStopIndex(String dna, int index) {
    int tga = dna.indexOf("tga", index);
    if (tga == -1 || (tga - index) % 3 != 0) {
      tga = dna.length();
    }
    int taa = dna.indexOf("taa", index);
    if (taa == -1 || (taa - index) % 3 != 0) {
      taa = dna.length();
    }
    int tag = dna.indexOf("tag", index);
    if (tag == -1 || (tga - index) % 3 != 0) {
      tag = dna.length();
    }
    return Math.min(tga, Math.min(taa, tag));
  }
}

【问题讨论】:

    标签: java genetics


    【解决方案1】:

    尝试只使用:

     printAllgenes(a); 
    

    因为printAllgenes方法没有任何类型的return语句。

    【讨论】:

    • 啊好的。那行得通。谢谢!
    • 对不起,还有一件事-我如何从 printAllgenes 打印测试方法中的结果,因为它没有分配给变量?
    • 你可以这样使用: public int printAllgenes(String dna){ //一些代码... return sp; @瑞安
    • 需要重新实现printAllgenes()方法。只需添加一个返回类型int 并返回你想从方法内部返回的变量...
    • 只能去掉编译错误没能达到他到底想要达到的...
    【解决方案2】:

    将返回类型 void 更改为 int 它将返回您想要从 printAllgenes(String dns) 方法返回的任何计数。您将获得一个 int 返回,它将初始化您在控制台上显示的变量 b

    public int printAllgenes(String dna){
          int sp = 0; //start point
              while (true){
              int start = dna.indexOf("atg,sp");
                 if (start==-1){
                    break;
                    }   
                  int stop = findStopIndex(dna,start+3);
                  if (stop!=dna.length()){
                       System.out.println(dna.substring(start,stop+3));
                       sp=stop+3;
                       }
                 else{
                     sp=sp+3;
                 }        
            } 
            return sp;
    
        }
    

    现在您的Test Method 实现将正常工作...

    public void test(){
    String a= "atg aaa tab tag atg aaa tga aat ag";
    int b = printAllgenes(a);     
    System.out.println("DNA string is " +a);
    System.out.println("Gene found is "+b);    
     }
    

    谢谢你..

    【讨论】:

      猜你喜欢
      • 2018-09-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-06-29
      • 1970-01-01
      相关资源
      最近更新 更多