我必须解决一个小问题: 对于给定的字符数组,
char[] lista = {'a', '2', '?', 'd', '!', 'S', '3', 'D', 'k'};
我必须:
我在4岁时遇到了问题。
到目前为止我的代码:
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]);
}
}
}
有关如何打印符号的任何建议? 感谢。
答案 0 :(得分:3)
的倒数
不是
但
换句话说,只要lista[j]
等于symbols[z]
,就应该在z上打破内循环,只有在symbols
找不到匹配项后才打印它是一个符号}。
(我这里没有提供明确的代码,因为这是家庭作业)
答案 1 :(得分:2)
如果用“符号”表示“不是数字或字母”:您可以检查字符是不是数字也不是字母 - 如果它们都不是,则打印出来。
在迭代boolean flag
和true
时,letters
[初始化为numbers
],如果找到匹配项,则将其设置为false
其中之一。
如果在迭代结束时仍然是true
- 它是一个符号。
我知道这是作业,所以你可能不被允许 - 但如果你可以使用HashSet<Character>
- 它可能会简化你的生活。
答案 2 :(得分:1)
您可以简化for循环。您可以使用包含所需字符的字符串,然后检查字符串中是否包含给定字符。您还可以使用Character类来检查char是否表示字母/数字等。
例如:
public static void main(String[] args) {
char[] list = {'a', '2', '?', 'd', '!', 'S', '3', 'D', 'k'};
for (char c: list) {
if (Character.isLetter(c)) {
System.out.println(c + " is a Letter");
if ("aeiouAEIOU".contains(String.valueOf(c))) {
System.out.println(c + " is a vowel ");
}
else {
System.out.println(c + " is a consonant");
}
}
}
}
针对您的具体问题:
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]);
这里你应该有一个布尔标志来检查no_symbols数组中是否包含该值。
答案 3 :(得分:1)
您可能会发现处理字符串集合更容易。
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