【发布时间】:2017-09-11 01:54:53
【问题描述】:
我想强调我知道如何解决这个问题,只要我可以修改我的导师给我的代码,但这不是一个选择。我还应该强调我对Java没有太多经验。
所以我被分配了这个任务来完成一个为我提供骨架代码的项目。这是我运行它得到的输出:
Genomic sequence: [C@4aa298b7
Sequence length: 25
Array of exon positions: [1, 5, 8, 10, 13, 16]
如您所见,“基因组序列”字段正在打印一个指针,而不是看起来更像“AAAGGTTATTA...”的有效数据
这是打印信息的地方:
public class BioSeqData
{
public static void main(String[] args)
{
String demodna = new String("AATGCCAGTCAGCATAGCGTAGACT");
int[] ardemo = {1, 5, 8, 10, 13, 16};
GenomicDNASequence gdemo = new GenomicDNASequence(demodna.toCharArray());
System.out.println( "Genomic sequence: " + gdemo );
...
如果我可以在赋值中修改这个类以打印出指针指向的内容而不是指针本身,我会的,但这不是一个选项。如何更改 GenomicDNASequence 以返回 char 数组而不是指针?
以下是基因组 DNA 序列的相关部分:
public class GenomicDNASequence extends DNASequence
{
public boolean[] iscoding; // made public instead of private for grading.
public GenomicDNASequence(char[] gdnaarr)
{
super(gdnaarr);
}
...
以及它扩展的类:
public class DNASequence extends Sequence
{
public DNASequence(char[] dnaarr)
{
super(dnaarr);
}
...
以及扩展的类:
public class Sequence
{
public char[] seqarr; // made public instead of protected for grading.
public Sequence(char[] sarr)
{
for(int i=0;i<sarr.length;i++){
if (!isValidLetter(sarr[i])){
throw new IllegalArgumentException("Invalid sequence of letters for class edu.iastate.cs228.hw1.Sequence");
}
}
seqarr=sarr;
...
【问题讨论】:
-
它正在打印字符数组的默认
toString。这应该足以让您入门。 -
我知道了,请参考题首粗体字
-
我是说,既然你知道数据是什么,你就有足够的信息来获取这些数据并获得你想要的输出。因为它是课程作业,所以它是一个学习的机会(这是从你那里拿走的,但这不是你的错)。
-
从 OP 中获取了什么?在 StackOverflow 上提问是一个很好的学习机会。社区在大量讨论中的筹码通常远远超出来自个别分配问题的有时很小且集中的学习目标。显然,自己发现一个解决方案是可取的,但是当遇到困难时,最好通过大量详细说明和背景信息获得答案,这对学习者来说比仅仅做最少的工作来解决分配的问题更有价值。干杯。
标签: java string class pointers