Java字符串返回多个值

Java字符串返回多个值,java,Java,我正在为一个学校项目制作一个简单的脚本,如果我输入一个字母,我希望它能打印出氨基酸序列 package emmas; import java.util.Scanner; public class Emma { public static void main(String args[]){ @SuppressWarnings("resource") Scanner Input = new Scanner(System.in); in

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

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”,它将返回 空中交通管制,空中交通管制,空中交通管制
我不知道如何操作(这必须适用于多达20个不同的字母。我这里只有2个字母,因为我没有全部添加)。

您可以继续执行到目前为止所做的操作,或者简单地构建一个“映射”对象,用值初始化它,然后引用它来打印相应的值

初始化:

private static final Map<Character,String> map = new HashMap<>();
static {
   map.put('f', "ACT");
   map.put('e', "ATG");
   ...
}
这样,您的方法中就不需要任何if

其他注释
  • 实际上,您并不希望返回多个值。您希望将给定字符串与一组不同的可能值进行匹配
  • 如果要使多个字符显示为连续的,这意味着它们之间没有空格,则需要迭代输入字符串的每个字符:

    for( int i=0; i< input.length(); i++){
        System.out.println( map.get( input.charAt(i) ) );
    }
    
    for(int i=0;i
  • 除上述事项外,您还需要:

    • 在输出中添加逗号
    • 检查无效字符

您可以继续执行到目前为止所做的操作,或者只需构建一个“映射”对象,用值初始化它,然后引用它来打印相应的值

初始化:

private static final Map<Character,String> map = new HashMap<>();
static {
   map.put('f', "ACT");
   map.put('e', "ATG");
   ...
}
这样,您的方法中就不需要任何if

其他注释
  • 实际上,您并不希望返回多个值。您希望将给定字符串与一组不同的可能值进行匹配
  • 如果要使多个字符显示为连续的,这意味着它们之间没有空格,则需要迭代输入字符串的每个字符:

    for( int i=0; i< input.length(); i++){
        System.out.println( map.get( input.charAt(i) ) );
    }
    
    for(int i=0;i
  • 除上述事项外,您还需要:

    • 在输出中添加逗号
    • 检查无效字符

我建议您使用map,但如果您只有很少的字符串,则无需这样做

         while (Input.hasNext()){
             String in  = Input.next();
             for(int i=0;i< in.length();i++) {
                 if(Character.toLowerCase(in.charAt(i)) == 'f')
                     System.out.print(f+",");
                 else if(Character.toLowerCase(in.charAt(i))=='e')
                     System.out.print(e+",");
             }
             System.out.println("");
         }
while(Input.hasNext()){
字符串in=Input.next();
对于(int i=0;i
我建议您使用map,但如果您只有很少的字符串,则无需这样做

         while (Input.hasNext()){
             String in  = Input.next();
             for(int i=0;i< in.length();i++) {
                 if(Character.toLowerCase(in.charAt(i)) == 'f')
                     System.out.print(f+",");
                 else if(Character.toLowerCase(in.charAt(i))=='e')
                     System.out.print(e+",");
             }
             System.out.println("");
         }
while(Input.hasNext()){
字符串in=Input.next();
对于(int i=0;i
您可以选择开关箱。 while(Input.hasNext()){

检查这是否解决了您的问题。
还有一件事。作为最佳编码实践,您的输入变量应该是驼峰型。

您可以选择开关型。 while(Input.hasNext()){

检查这是否解决了您的问题。
还有一件事。作为最佳编码实践,您的输入变量应该是驼峰大小写。

不确定我是否理解这个问题,但是如果您想根据一些输入输出字符串,例如,ffe将输出ATC、ATC、ATG,并且您将在其中再输入20个字符,那么在您的代码中包含一些数据结构(如Map)就很好了可以将每个字符与字符串值关联。 f=>ATC e=>ATG

公共类Emma{
公共静态void main(字符串[]args){
Map aminos=新的HashMap();
字符f='f';
字符e='e';
氨基放电管(f,“ATC”);
氨基硫醚(例如,ATG);
字符串seq=reader();
对于(int i=0;i

因此,您可以再添加20个或需要多少个字符,并将值分配给它们。您可以看到,我消除了if-else块,这使我的代码更清晰易读。

不确定我是否理解这个问题,但如果您希望根据某些输入输出字符串,例如,ffe将输出ATC、ATC、ATG,您将有一个输入20个字符,然后在代码中加入一些数据结构,比如Map,这样您就可以将每个字符与字符串值关联起来。 f=>ATC e=>ATG

公共类Emma{
公共静态void main(字符串[]args){
Map aminos=新的HashMap();
字符f='f';
字符e='e';
氨基放电管(f,“ATC”);
氨基硫醚(例如,ATG);
字符串seq=reader();
对于(int i=0;i

因此,您可以再添加20个或需要多少个字符,并将值分配给它们。您可以看到,我消除了if-else块,这使我的代码更清晰易读。

我的答案解决了您的问题吗?我的答案解决了您的问题吗?谢谢Amer,我还想知道我是否可以轻松导出它,以便在没有eclipse的情况下以某种方式运行它?在独立可运行文件或其他文件中?如果