如何将 String 参数传递给 void 方法?
How to pass a String parameter to a void method?
我需要为我正在学习的课程编写一个 Java 程序,该程序在 DNA.The 链中寻找基因 我遇到的问题是,从测试方法来看,我需要将 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));
}
}
尝试只使用:
printAllgenes(a);
因为printAllgenes
方法没有任何类型的return语句。
将 return 类型 void
更改为 int
它会 return 你想从 printAllgenes(String dns)
方法中 return 的任何数。您将获得一个 int return,它将初始化您正在控制台上显示的变量 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);
}
谢谢..
我需要为我正在学习的课程编写一个 Java 程序,该程序在 DNA.The 链中寻找基因 我遇到的问题是,从测试方法来看,我需要将 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));
}
}
尝试只使用:
printAllgenes(a);
因为printAllgenes
方法没有任何类型的return语句。
将 return 类型 void
更改为 int
它会 return 你想从 printAllgenes(String dns)
方法中 return 的任何数。您将获得一个 int return,它将初始化您正在控制台上显示的变量 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);
}
谢谢..