基于java中另一个数组中的值初始化数组

基于java中另一个数组中的值初始化数组,java,arrays,Java,Arrays,这个代码怎么了?我想在数组中插入cnew,因为如果carr包含'a',cnew应该得到100(int),对于't'-cnew应该得到101(int),对于'g'-110和'c'-111 String s="atgc"; len=s.length(); char[] carr=s.toCharArray(); char[] cnew = new char[len]; for(int i=0;i<len;i++){ for(int j=0;j<len;j++){ if

这个代码怎么了?我想在数组中插入cnew,因为如果carr包含'a',cnew应该得到100(int),对于't'-cnew应该得到101(int),对于'g'-110和'c'-111

String s="atgc";
len=s.length();

char[] carr=s.toCharArray();
char[] cnew = new char[len];

for(int i=0;i<len;i++){
    for(int j=0;j<len;j++){
    if(carr[j]=='a'){
        cnew[i]=100;
    }else if(carr[j]=='t'){
        cnew[i]=101;
    }else if(carr[j]=='g'){
        cnew[i]=110;
    }else
        cnew[i]=111;


    }
}
String s=“atgc”;
len=s.长度();
char[]carr=s.toCharArray();
char[]cnew=新字符[len];

对于(int i=0;i不需要嵌套循环:

    String s="atgc"; 
    int len=s.length();
    char[] carr = s.toCharArray(); 
    int[] cnew = new int[len];
    for(int i=0;i<len;i++) {
      if (carr[i]=='a'){
        cnew[i]=100;
      } else if(carr[i]=='t') {
        cnew[i]=101;
      } else if(carr[i]=='g') {
        cnew[i]=110;
      } else {
        cnew[i]=111;
      }
    }

如果您希望
cnew
包含
int
值,请将其设置为
int
数组。

不需要嵌套循环,因为这样您将执行两次相同的操作。两个数组的长度相同,因此它们可以使用一个索引

我还可以提出简短的版本,包括地图:

String s="atgc";

char[] carr=s.toCharArray();
char[] cnew = new char[carr.length];
Map<Character, Integer> mapping = new HashMap<Character, Integer>();
mapping.put('t',101);
mapping.put('a',100);
mapping.put('g',110);// this solution would be better for more letter mappings

for(int i=0;i<len;i++){
   if(mapping.containsKey(carr[i])) {
     cnew[i]=mapping.get(carr[i]);
   } else {
     cnew[i]=111;
   }
}
String s=“atgc”;
char[]carr=s.toCharArray();
char[]cnew=新字符[carr.length];
Map mapping=newhashmap();
映射。put('t',101);
映射。放置('a',100);
mapping.put('g',110);//此解决方案适用于更多字母映射

对于(inti=0;iIt是使用JDK8流或Guava函数的好地方,因为简而言之,此方法用于将字符串转换为int数组:)
String s="atgc";

char[] carr=s.toCharArray();
char[] cnew = new char[carr.length];
Map<Character, Integer> mapping = new HashMap<Character, Integer>();
mapping.put('t',101);
mapping.put('a',100);
mapping.put('g',110);// this solution would be better for more letter mappings

for(int i=0;i<len;i++){
   if(mapping.containsKey(carr[i])) {
     cnew[i]=mapping.get(carr[i]);
   } else {
     cnew[i]=111;
   }
}