Java 从字符数组打印符号

Java 从字符数组打印符号,java,arrays,char,Java,Arrays,Char,我要解决一个小问题: 对于给定的字符数组 char[] lista = {'a', '2', '?', 'd', '!', 'S', '3', 'D', 'k'}; 我必须: 只打印元音 只打印辅音 打印号码和号码 打印其他符号 我在四年级有问题 到目前为止,我的代码是: public class Teste { public static void main(String[] args) { char [] lista = {'a', '2', '?', 'd', '!'

我要解决一个小问题: 对于给定的字符数组

char[] lista = {'a', '2', '?', 'd', '!', 'S', '3', 'D', 'k'}; 
我必须:

  • 只打印元音
  • 只打印辅音
  • 打印号码和号码
  • 打印其他符号
  • 我在四年级有问题

    到目前为止,我的代码是:

    public class Teste {
    
        public static void main(String[] args) {
        char [] lista = {'a', '2', '?', 'd', '!', 'S', '3', 'D', 'k'};
        char [] vogal = {'a', 'e', 'i', 'o','u','A','E','I','O','U'};
        char [] numbers = {'1', '2', '3', '4', '5', '6', '7', '8', '9', '0'};
        char [] leters = {'b','c','d','f','g','h','j','k','l','m','n','p','q','r','s','t','v','w','x','y','z','B','C','D','F','G','H','J','K','L','M','N','P','Q','R','S','T','V','W','X','Y','Z'};
        char [] symbols = {'a', 'e', 'i', 'o','u','A','E','I','O','U','1', '2', '3', '4', '5', '6', '7', '8', '9', '0','b','c','d','f','g','h','j','k','l','m','n','p','q','r','s','t','v','w','x','y','z','B','C','D','F','G','H','J','K','L','M','N','P','Q','R','S','T','V','W','X','Y','Z'};
    
        for (char j=0; j<lista.length ; j++)
        for (char i=0; i<vogal.length ; i++ ){
        if ( vogal [i] == lista [j] )
        System.out.println( "the vowels are: " + vogal [i] );
        }
    
        for (char j=0; j<lista.length ; j++)
        for (char x=0; x<numbers.length ; x++ ) {    
        if ( numbers [x] == lista [j] )
            System.out.println( "the numbers are: " + numbers [x] );       
        }
    
        for (char j=0; j<lista.length ; j++)
        for (char y=0; y<leters.length ; y++ ) {    
        if ( leters [y] == lista [j] )
            System.out.println( "the leters are: " + leters [y] );       
        }
            //my main problem is here 
        for (char j=0; j<lista.length ; j++)
        for (char z=0; z<symbols.length ; z++ ){    
        if (symbols [z] != lista [j])
             System.out.println( "the symbols are: " + lista [j]); 
    }
     }
        }
    
    公共类测试{
    公共静态void main(字符串[]args){
    char[]lista={'a','2','?','d','!','S','3','d','k'};
    char[]vogal={'a','e','i','o','u','a','e','i','o','u'};
    字符[]数字={'1','2','3','4','5','6','7','8','9','0'};
    字符[]leters={b','c','d','f','g','h','j','k','l','m','n','p','s','t','v','w','x','y','z','b','c','d','f','g','h','j','k','l','m','n','p','q','r','s','v','z','b','c','d','f','g','h','h','j','k','l','m','n','p','q','r','s','t','v','w','x'';
    此外,我亦,、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、p',q',r',s',t',v',w',x',y',z'};
    对于(char j=0;j如果“符号”的意思是“不是数字或字母”:您可以检查字符是否不是数字或字母,如果不是数字或字母,则可以打印

    在迭代
    字母
    数字
    时,使用
    布尔标志
    [初始化为
    ],如果发现与其中一个匹配,则将其设置为

    如果在迭代结束时它仍然是
    true
    -它是一个符号

    我知道这是家庭作业,所以你可能不被允许——但如果你能使用a——它可能会简化你的生活。

    与之相反

    • 如果参考集中至少有一个(如符号)匹配,则打印
    不是

    • 如果参考集中至少有一个不匹配,则打印
    但是

    • 如果引用集中没有匹配项,则打印
    换句话说,只要
    lista[j]
    等于
    symbols[z]
    ,就应该在z上断开内部循环,并且只有在
    symbols
    中没有找到匹配项时才打印它是符号


    (我这里不提供显式代码,因为这是家庭作业)

    您可以简化for循环。您可以使用包含必需字符的字符串,然后检查字符串中是否包含给定字符。您还可以使用字符类检查字符是否代表字母/数字等

    例如:

    关于您的具体问题:

    for (char j=0; j<lista.length ; j++)
        for (char z=0; z<symbols.length ; z++ ){    
        if (symbols [z] != lista [j])
             System.out.println( "the symbols are: " + lista [j]); 
    

    对于(char j=0;j您可能会发现处理字符串和字符集合更容易

    String list = "a2?d!S3Dk";
    String vowel = "aeiouAEIOU";
    
    for(char ch : list.toCharArray()) {
       if (Character.isDigit(ch))
          System.out.print(ch + " is a digit");
       else if (Character.isLetter(ch))
          System.out.print(ch + " is a letter");
       else
          System.out.print(ch + " is a symbol");
    
       if (vowel.indexOf(ch) >= 0)
          System.out.print(" and a vowel.");
      System.out.println();
    }
    
    印刷品

    a is a letter and a vowel.
    2 is a digit
    ? is a symbol
    d is a letter
    ! is a symbol
    S is a letter
    3 is a digit
    D is a letter
    k is a letter
    

    当您尝试打印符号时,实际会发生什么情况?为什么您的符号数组包含字母而不是符号?为什么您使用
    char
    而不是
    int
    作为数组索引?
    char[]lista=
    应该是
    char[]lista=…
    。你对for循环内部的缩进有误导性…@CarlNorum我不知道所有的符号。我想我可以将我的“符号”数组与“列表”匹配,然后检查“符号”数组中缺少什么。我应该将数组称为“noSymbols”。@Lion…它打印“列表”每个字符数组几次。还建议使用
    java.lang.Character
    。有一些有用的方便方法,如
    isleter
    isDigit
    a is a letter and a vowel.
    2 is a digit
    ? is a symbol
    d is a letter
    ! is a symbol
    S is a letter
    3 is a digit
    D is a letter
    k is a letter