Java 如果函数在我的程序上不起作用
我的代码试图在gene[]上找到相同的3个字母,并在trait[]上打印相应的数组。但是“if函数试图检查整个数组输入是否可以被3整除”。。需要帮助为什么我的“如果”功能不打印Java 如果函数在我的程序上不起作用,java,Java,我的代码试图在gene[]上找到相同的3个字母,并在trait[]上打印相应的数组。但是“if函数试图检查整个数组输入是否可以被3整除”。。需要帮助为什么我的“如果”功能不打印 public class HelloWorld { public static void main(String[] args) { //args example: TTTGGTGGGTTC String[] gene = {"TTT","TTC"........GGC","
public class HelloWorld {
public static void main(String[] args) {
//args example: TTTGGTGGGTTC
String[] gene = {"TTT","TTC"........GGC","GGA","GGG"};
char[] trait = {'F','F','V','V'......,'E','G','G','G','G'};
String input = args[0];
int dome = input.length();
int x = 0;
int z = 2;
int b = 0;
for (int c = 0 ; c <= dome/3 ; c++){
String top = input.substring(x, z+1);
while (!top.equals(gene[b]) ){
b = b + 1;
}
System.out.print(trait[b] + " ");
x = x + 3;
z = z + 3;
b = 0;
}
if ( dome%3 == 0){
System.out.print("no excess ");
}else{
System.out.print("*");
}
}
}
公共类HelloWorld{
公共静态void main(字符串[]args){
//args示例:TTTGGTGGGTTC
字符串[]基因={“TTT”,“TTC”...GGC”,“GGA”,“GGG”};
char[]trait={'F','F','V','V','E','G','G','G','G','G'};
字符串输入=args[0];
int dome=input.length();
int x=0;
int z=2;
int b=0;
for(int c=0;c我认为for循环运行的索引太多了
for (int c = 0 ; c <= dome/3 ; c++)
for(int c=0;c如果If/else部分不工作,则可能会从for循环内部引发异常
因为for循环不更新任何内容,因此if/else部分会受到影响。您在命令行上为程序提供了什么输入?我想知道在String input=args[0]之后会变成什么输入
。此外,您的c变量从未使用过。您期望的输出是什么,给定的输出是什么?对于给定的示例字符串,它应该打印“无多余”,因为输入的长度(12)可以除以3@Gus如果(c%3==0),您在哪里看到
?@BryanJamesLim当你给它一个长度为11的输入时会发生什么?我们知道应该发生什么,但问题显然是它没有发生。那么,告诉我们发生了什么。@Gus不,不应该发生。测试是输入的长度是否可以被3整除,并且dome
包含输入的长度。t问题在于if语句,循环对if语句没有任何更改。@Takendark它与if语句有很大关系。如果长度可被3整除,则循环的最后一次迭代将在子字符串上抛出一个IndexOutOfBounds
,因为有额外的迭代,因此程序如果
,就永远不会到达said。考虑到OP在数据结构方面的高超技巧,如果他们忽略了抛出的异常,我也不会感到惊讶。为什么要投否决票?这就是正在发生的事情。(经过测试和确认。)
for (int c = 0 ; c < dome/3 ; c++)