2016-05-03 67 views
0

我对Java很新,我需要为这个任务解决这个问题。任何人都可以帮助我吗?分割字符串,搜索和翻译子字符串JAVA

问题是我们需要输入一个像“AUGUUUCU”这样的字符串,然后将它分成像“AUG”,“UUU”,“UCU”这样的三个字母字符串。

之后,我将不得不遍历这些并将它们翻译为“AUG = METIONINA”,“UUU = FENILANINA”,“UCU = SERINA”。谁能帮我这个?

我已经找到了一种方法割裂开来:

public class Main { 

    public static void main(String[] args) {    
     String str = "AUG-UUU-UCU"; 
     String delimiter = "-"; 
     String[] temp; 
     temp = str.split(delimiter); 
     for(int i =0; i < temp.length ; i++) 
      System.out.println(temp[i]); 
    }  
} 
+2

提示:你应该使用在类['String'](https://docs.oracle可用的方法'substring'。 com/javase/7/docs/api/java/lang/String.html) – alfasin

+0

感谢它确实帮助我将它们分开:D – betterlaylow

+0

我投票结束此问题作为题外话,因为StackOverflow是问答网站,而不是按需编码器。 –

回答

1

如果你应该把用户的输入,那么你就需要使用扫描仪:

Scanner sc = new Scanner(System.in); 
String input = sc.next(); 

要将它们分开三个字母的字符串,使用一个数组,并使用循环for的子存储阵列中:

String[] subs = new String[input.length()/3]; 
int index; 
for (int i=0; i<input.length(); i++) { 
    index = i*3; 
    subs[i] = input.substring(index, index+3); 
} 

你ç乌尔德然后遍历另一个for环阵列上,并使用switch语句以确定正确的输出:

for (int i=0; i<subs.length; i++) { 
    switch(subs[i]) { 
     case "AUG": 
      System.out.println("METIONINA"); 
      break; 
     case "UUU": 
      System.out.println("FENILANINA"); 
      break; 
     case "UCU": 
      System.out.println("SERINA"); 
      break; 
     default: 
      break; 
    } 
} 

注意switch块内的break语句。这些包括很重要;没有break语句,它将在匹配大小写后简单地执行所有代码。

+0

WOOOOW,我想你只是救了我xD我没有想到在这个开关中使用我有一个类似的程序,所有如果和其他的xD非常感谢你xD我要去试试 – betterlaylow

+0

它返回我: 登记簿 AUGUUUUCU 异常在线程 “主” java.lang.StringIndexOutOfBoundsException:字符串索引超出范围:12 \t在java.lang.String.substring(String.java:1963) \t在Main.main(主。 java:13) 有什么想法吗? – betterlaylow

+0

哦,我明白我做错了什么。在第一个'for'语句中,而不是'i

0

您可以创建一个包含要翻译的值的数组。

translateArray = new String[3]; 

然后,您可以根据您收到的输入设置并行数组的值。然后你可以发布这些值。

for (int i=0; i<temp.length ; i++) { 
    if (temp[i] == "AUG") { 
     translateArray[i] = "METIONINA"; 
    } 
    if (temp[i] == "UUU") { 
     translateArray[i] = "FENILANINA"; 
    } 
    if (temp[i] == "UCU") { 
     translateArray[i] = "SERINA"; 
    } 
    System.out.println(temp[i] + " = " + translateArray[i]); 
} 

也许这对你会更好。

+0

谢谢,是的,我在想这样的事情,但问题是如果我把第一个UUU或UCU,然后AUG的translateArray是不会改变像xD – betterlaylow

+0

这应该对你更好。 –

0

要分割串为字符串3个字符长为1行:

String[] words = str.split("(?<=\\G...)");