Java字符串返回多个值

时间:2016-09-25 14:46:42

标签: java

我正在制作一个学校项目的简单脚本,如果我输入一个字母,我希望它能打印氨基酸序列。

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个,因为我没有全部添加)。

4 个答案:

答案 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块,它使我的代码更加清晰和可读。