Java 如何为字符数组制作扫描仪?

Java 如何为字符数组制作扫描仪?,java,arrays,char,java.util.scanner,Java,Arrays,Char,Java.util.scanner,例如,我如何使它,以便用户可以输入一个字符数组的值 下面是我尝试创建它时遇到的语法错误: char [] bacteriaStrand = new char[9]; String bacteria = bac.next(); bacteriaStrand = bacteria; 以下是我到目前为止的全部代码: import java.util.Scanner; public class SodiknBrukDNAAnalysispt3v1 { public st

例如,我如何使它,以便用户可以输入一个字符数组的值

下面是我尝试创建它时遇到的语法错误:

    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.");
            }
        }
    }
}
import java.util.Scanner;
公共级Sodiknbrukdnaanalysipt3v1
{
公共静态void main(字符串[]args)
{
扫描仪bac=新的扫描仪(System.in);
char[]treatmentStrand={T'、'C'、'G'、'A'、'A'、'G'、'T'、'A'、'T'、'C'、'C'、'A'、'G'};
char[]bacteriaStrand=新字符[9];
char[]拼接序列号=新字符[treatmentStrand.length+bacteriaStrand.length];
系统输出打印LN(“NIH处理拼接器v.1”);
System.out.println(“”);
系统输出打印(“处理链:”);
for(int t=0;t
您正在将字符串分配给Char[],因此它的类型不匹配,请将字符串分配给字符串数组或执行
bacteriaStrand=bacteria.tocharray()
将字符串bacteriaStrand转换为Char[]bacteria。或重试

for(int i=0;i<bacteriaStrand.length;i++){
bacteriaStrand[i]=bac.next().charAt(0);
}

for(int i=0;i如果需要
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()轻松实现,它返回字符串中字符的副本


谢谢

这里有一个可行的解决方案

使用上面的建议(toCharArray)。 我还添加了允许字符列表,以便于比较,并在处理之前确保长度为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;
            }
        }
    }
}
公共类SodiknBrukDNAAnalysispt3v1{
公共静态void main(字符串[]args){
扫描仪bac=新的扫描仪(System.in);
char[]treatmentStrand={T'、'C'、'G'、'A'、'A'、'G'、'T'、'A'、'T'、'C'、'C'、'A'、'G'};
char[]bacteriaStrand=新字符[9];
char[]拼接序列号=新字符[treatmentStrand.length+bacteriaStrand.length];
系统输出打印LN(“NIH处理拼接器v.1”);
System.out.println(“”);
系统输出打印(“处理链:”);
for(int t=0;t
上次我检查时,没有方法。对不起,我的错误!您可以从扫描仪(输入)t中获取第一个字符:
bacteriaStrand[I]=bac.next().charAt(0);
第二个示例可以通过调用
String#tocharray()
轻松实现,它返回字符串中字符的副本。
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;
            }
        }
    }
}