就像我如何创建它以便用户可以输入char数组的值?
这是我尝试制作它的尝试,但出现了语法错误:
char [] bacteriaStrand = new char[9];
String bacteria = bac.next();
bacteriaStrand = bacteria;
到目前为止,这是我的整个代码:
import java.util.Scanner;
public class SodiknBrukDNAAnalysispt3v1
{
public static void main(String[] args)
{
Scanner bac = new Scanner(System.in);
char [] treatmentStrand = {'T','C','G','A','G','A','G','T','A','T','C','C','C','A','G'};
char [] bacteriaStrand = new char[9];
char [] splicedStrand = new char[treatmentStrand.length + bacteriaStrand.length];
System.out.println("NIH Treatment Splicer v. 1");
System.out.println(" ");
System.out.print("Treatment Strand: ");
for (int t = 0; t < treatmentStrand.length; t++)
{
System.out.print(treatmentStrand[t]);
}
System.out.println(" ");
System.out.print("Bacterium Strand: ");
String bacteria = bac.next();
bacteriaStrand = bacteria;
for (int b = 0; b < bacteriaStrand.length; b++)
{
System.out.print(bacteriaStrand[b]);
if (bacteriaStrand[b] != 'A' || bacteriaStrand[b] !='C' || bacteriaStrand[b] !='T' || bacteriaStrand[b] !='G')
{
System.out.println("Error! You can only input capital A, C, T, and G.");
}
}
}
}
答案 0 :(得分:1)
您正在为Char []分配String,因此它的类型不匹配,要么将字符串赋值给String Array,要么bacteriaStrand=bacteria.toCharArray();
将String bacteriaStrand转换为Char []细菌。或者尝试
for(int i=0;i<bacteriaStrand.length;i++){
bacteriaStrand[i]=bac.next().charAt(0);
}
答案 1 :(得分:0)
如果您想要char[]
(基元),可以使用返回char[]
的方法。
<强>的src:强>
public static char[] toCharArray(String input){
StringTokenizer stringTokenizer = new StringTokenizer(input, " ");
char[] chars = new char[stringTokenizer.countTokens()];
for (int i = 0; i < chars.length; i++)
chars[i] = stringTokenizer.nextToken().charAt(0);
return chars;
}
<强>实现:强>
char[] bacteriaStrand = toCharArray(bacteria);
- 或 -
如果你的字符串没有分隔:
* *编辑
第二个例子可以通过调用String#toCharArray()来轻松实现,它返回字符串中字符的副本。 - Obicere
String string = "STRING";
char[] chars = string.toCharArray();
感谢
答案 2 :(得分:0)
这是一个可行的解决方案。
使用上面的建议(toCharArray)。 我还添加了allowedcharacters列表,以便于比较,并在处理之前确保长度为9。
您可能还想忽略案例。
bacteria.toUpperCase().toCharArray();
这将有助于
public class SodiknBrukDNAAnalysispt3v1 {
public static void main(String[] args) {
Scanner bac = new Scanner(System.in);
char [] treatmentStrand = {'T','C','G','A','G','A','G','T','A','T','C','C','C','A','G'};
char [] bacteriaStrand = new char[9];
char [] splicedStrand = new char[treatmentStrand.length + bacteriaStrand.length];
System.out.println("NIH Treatment Splicer v. 1");
System.out.println(" ");
System.out.print("Treatment Strand: ");
for (int t = 0; t < treatmentStrand.length; t++)
{
System.out.print(treatmentStrand[t]);
}
System.out.println(" ");
System.out.print("Bacterium Strand: ");
String bacteria = bac.next();
if (bacteria.length() != 9) {
System.out.println("Error! You are expected to input 9 characters");
return ;
}
bacteriaStrand = bacteria.toCharArray();
List<Character> allowedCharacters = Arrays.asList('A', 'C', 'T', 'G');
for (int b = 0; b < bacteriaStrand.length; b++) {
System.out.print(bacteriaStrand[b]);
if (!allowedCharacters.contains(bacteriaStrand[b])) {
System.out.println("Error! You can only input capital A, C, T, and G.");
return;
}
}
}
}