私はこの課題に取り組んでおり、一度に 10 文字のグループでシーケンスを表示する方法を知りたいと思っていました。
以下は、作業中のプログラムのスクリーンショットです。
たとえば、出力ボックスで 10 文字をグループ化したい:
1 CTCTAACGCG CAAGCGCATA TCCTTCTAGG 61 ....
スペースと数字を除いて、各行は約 60 文字なので、10 文字のグループが 6 つ必要です。
以下は、この出力を表示するために作成したコードです。
public void dispLines() {
// Get the selected value of characters per line and assign it to noc variable
String noc = numOfChar.getSelectedItem().toString();
// Call StringBuffer object and assign sb variable to it
StringBuffer sb = new StringBuffer();
// Assign raw dna data to dna variable, where string will be mutated
String dna = rawDNAInput.getText();
// Create newdna variable to store the newly created data
String newdna = "";
// Loop through the size of raw dna
for (int i = 0 ; i < dna.length (); ++i)
{
// Assign every single character to StringBuffer sb
sb.append(dna.charAt (i));
}
// Assign the StringBuffer sb values to the newdna variable
newdna = sb.toString();
// Recall StringBuffer object, so new data can be assigned
sb = new StringBuffer();
// Assign start varaible of 0
int start = 0;
// Assign end varaible to be start + number of characters per line
int end = start + Integer.parseInt(noc);
// Keep looping till end value is less than the length of the dna
while(end < newdna.length())
{
// Append values into StringBuffer sb varaible by calling makeNumberedStr method
sb.append(makeNumberedStr(newdna.substring(start, end), start + 1));
// Increment start variable by the selected numbers of characters per line
start += Integer.parseInt(noc);
// Increment end variable by the selected numbers of characters per line
end += Integer.parseInt(noc);
}
// Append values into StringBuffer sb varaible by calling makeNumberedStr method
sb.append (makeNumberedStr (newdna.substring (start), start + 1));
String result = sb.toString();
for(int i = 0; i < result.length(); i++) {
}
// Check to make sure uppercase is selected, if it is then make every character uppercase, else make them lowercase
if(upperCase.isSelected()) {
DNAOutput.setText(result.toUpperCase());
} else if(lowerCase.isSelected()) {
DNAOutput.setText(result.toLowerCase());
}
}
/*
* makeNumberedStr
* This method only displays required number of characters per line
* @parameters String x and integer num
* @returns new StringBuffer value
*/
private String makeNumberedStr (String s, int num)
{
// makes and returns a string composed from left to right of:
// a 6 character field containing right justified [num] followed by 2 spaces
// the string s followed by \n
// Call new StringBuffer object and give it a length of raw dna + 8
StringBuffer sb = new StringBuffer (s.length ());
// Create nstr String varaible and give it value of num
String nstr = String.valueOf (num);
// Loop through the nstr length and append blank space
for (int i = 0 ; i < 6 - nstr.length () ; ++i)
sb.append (' ');
// Check if display number is selected, or else do not display number on every line
if(indexNum.isSelected() == true)
sb.append (nstr + " ");
// Append s value to String Buffer
sb.append (s);
// Append new line to StringBuffer
sb.append ('\n');
// Return StringBuffer text
return sb.toString();
}
ありがとうございました。