我正在制作一个学校项目的简单脚本,如果我输入一个字母,我希望它能打印氨基酸序列。
package emmas;
import java.util.Scanner;
public class Emma {
public static void main(String args[]){
@SuppressWarnings("resource")
Scanner Input = new Scanner(System.in);
int end = 0;
String f = "A,T,C", e = "A,T,G";
while (end != -1){
if(Input.hasNext()){
String input = Input.next();
Input.nextLine();
if(input.equalsIgnoreCase("f")){
System.out.println(f);
} else if(input.equalsIgnoreCase("e")){
System.out.println(e);
}
}
}
}
}
这是我的代码,我想这样做,如果我键入例如“ffe”它将返回 ATC,ATC,ATG 我不知道如何(这最多可以申请20个不同的字母。我这里只有2个,因为我没有全部添加)。
答案 0 :(得分:2)
你可以继续做你到目前为止所做的事情,或者只是建立一个地图' object,用值初始化它,然后引用它来打印相应的值。
初始化:
private static final Map<Character,String> map = new HashMap<>();
static {
map.put('f', "ACT");
map.put('e', "ATG");
...
}
用法:
System.out.println( map.get(input.charAt(0) ) );
这样你就不需要在你的方法中使用任何ifs。
如果你想让几个字符看起来是连续的,这意味着它们之间没有空格,你需要遍历输入字符串的每个字符:
for( int i=0; i< input.length(); i++){
System.out.println( map.get( input.charAt(i) ) );
}
除上述事项外,您还需要:
答案 1 :(得分:0)
我建议使用地图,但如果你只有很少的字符串则不需要,你可以这样做
//Modify title to fit in url for Search Engine Optimization
function modified_for_new_line($data, $to_remove, $to_replace_with, $added_data)
{
$data_splitter = explode($to_remove, $data);
$data_packer = array_splice($data_splitter, 0);
$modified_data = $added_data . implode($to_replace_with, $data_packer);
return $modified_data;
}
$file1 = fopen("source.txt", "r");
$file2 = '#file2.txt';
if($file1)
{
while(($line = fgets($file1)) !== false)
{
$the_line = modified_for_new_line($line, ' ', "\n", '');
$new_line = 0 . $the_line;
file_put_contents($file2, $new_line);
}
fclose($file1);
fclose($file2);
echo 'All iz well';
}
else {
echo 'Sorry! There was a problem opening the file.';
}
答案 2 :(得分:0)
你可以选择开关盒。 while(Input.hasNext()){
String input = Input.next();
Input.nextLine();
switch (input) {
case "f":
System.out.println(f);
break;
case "e":
System.out.println(e);
break;
}
检查这是否解决了您的问题。 还有一件事。您的输入变量应该是驼峰式的,作为最佳编码实践。
答案 3 :(得分:0)
不确定我是否理解了这个问题,但是如果你想根据某些输入输出字符串,例如,ffe将输出ATC,ATC,ATG,你将有另外20个字符,那么它很好在您的代码中有一些数据结构,如Map,您可以将每个字符与字符串值相关联。 f =&gt; ATC e =&gt; ATG
public class Emma {
public static void main(String[] args) {
Map<Character, String> aminos = new HashMap<>();
Character f = 'f';
Character e = 'e';
aminos.put(f, "ATC");
aminos.put(e, "ATG");
String seq = reader();
for (int i = 0; i < seq.length(); i++) {
System.out.print(aminos.get(seq.charAt(i)));
}
}
public static String reader(){
Scanner scanner = new Scanner(System.in);
System.out.println("Enter char sequence... ");
String seq = scanner.next();
return seq;
}
}
因此您可以添加另外20个或需要多少个字符并为其分配值。你可以看到我消除了if else块,它使我的代码更加清晰和可读。