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
- 除上述事项外,您还需要:
- 在输出中添加逗号
- 检查无效字符
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的情况下以某种方式运行它?在独立可运行文件或其他文件中?如果