-3

我必须将用户输入 int 作为 dna 序列的长度。我试图返回 numberString 但每次我的数组都有问题

司机

import java.util.Scanner;
public class GenBank1 {

    public static void main(String[] args) {
        // TODO Auto-generated method stub
        Scanner in = new Scanner(System.in);
        System.out.println("Enter a desired DNA sequence length, between 1 and 10 please:");
        int inputLength = in.nextInt();
        System.out.println(inputLength);
        System.out.println(DNA1.toNumString(inputLength));

        int[] baseId = new int[inputLength];
        for(int i=0;i<=baseId.length;i++){
            baseId[i]=inputLength;
            int rndmr = (int)(4.0*Math.random());
            baseId[i]-=rndmr;
                System.out.print(baseId[i]+1 + ",");
        }    
    }    
}
4

2 回答 2

4
for(int i=0;i<=baseId.length;i++)

你可能应该做

for(int i=0;i<baseId.length;i++)

因为,在具有(比如说)10 个条目的数组中,它们的索引为 0 到 9。尝试查找 array[10] 将引发异常。

于 2013-10-31T19:39:20.977 回答
0

在不知道 DNA1 类是什么以及程序的功能是什么的情况下,我无法进一步评论。但是,是的,您将遇到 ArrayIndexOutOfBoundsException 来纠正此问题,以下应该可以工作

import java.util.Scanner;
public class GenBank1 {

public static void main(String[] args) {
    // TODO Auto-generated method stub
    Scanner in = new Scanner(System.in);
    System.out.println("Enter a desired DNA sequence length, between 1 and 10 please:");
    int inputLength = in.nextInt();
    System.out.println(inputLength);
    System.out.println(DNA1.toNumString(inputLength));

    int[] baseId = new int[inputLength];
    for(int i=0;i<baseId.length;i++){  
        baseId[i]=inputLength;
        int rndmr = (int)(4.0*Math.random());
        baseId[i]-=rndmr;
            System.out.print(baseId[i]+1 + ",");
    }    
}    
} 

您的 FOR 循环的结束子句希望从 0 -> length 开始,这将是错误的,因为您将遍历 Array 索引。

于 2013-10-31T19:38:57.890 回答