如何将 charAt 与数组一起使用?
How do you use charAt with an array?
我在用数组实现 charAt 时遇到了一些麻烦。我是 Java 的初学者(我想这是我唯一的编码经验)。
objective:创建一个程序,用户输入任意字符串,并在输出中记录元音的总数(区分大小写)
示例:
输入:字符
输出:
一 = 1
一个= 1
e = 1
import java.util.Scanner;
public class HW5 {
public static void main(String[] args) {
String [] alphabets =
{"aAbBcCdDeEfFgGhHiIjJkKlLmMnNoOpPqQrRsStTuUvVwWxXyYzZ"};
String vowels = "aAeEiIoOuU";
int found = 0;
Scanner sc = new Scanner(System.in);
System.out.print("Please enter any word: ");
String inputStr = sc.nextLine();
for(int i=0;i<alphabets.length;i++)
{
if(alphabets.charAt[i] == vowels)
*注:程序未完成
您需要检查 inputStr
的每个字符(不知道 alphabets
在您的代码中是关于什么的)并查看是否可以在 vowels
字符串中找到它。
String vowels = "aAeEiIoOuU";
int found = 0;
Scanner sc = new Scanner(System.in);
System.out.print("Please enter any word: ");
String inputStr = sc.nextLine();
for (int i = 0; i < inputStr.length(); i++) {
if (vowels.indexOf(inputStr.charAt(i)) >= 0) {
found += 1;
}
}
如果您在理解方法或 class 时遇到困难,documentation 会很有帮助。
话虽如此,有很多方法可以计算字符串中的元音。
您的输出表明您需要每种情况下每个元音的计数,而不仅仅是所有元音的计数。为此,您需要一张地图以便跟踪。
考虑类似
String input = "A string with vowels in it";
Map<Character, Integer> counts = new HashMap<≥();
for (int i = 0; i < input.length; i++) {
char c = input.chart(i);
if (c == 'a') {
int tmp = counts.getOrDefault('a', 0);
tmp++;
counts.put('a', tmp);
} else if (c == 'A') {
// same logic as above for uppercase A
} // other else if statements for e, E, i, I, o, O, u, U
}
// the map has all counts per vowel / case
地图获得所有计数后,您可以迭代其条目集以打印您需要的输出
for (Map.Entry<Character, Integer> e : counts. entrySet()) {
System.out.println(e.getKey() + " = " + e.getValue());
}
如果您只需要值的数量而不需要将其分解为哪些元音,请考虑类似(未测试)
String vowels = "AaEeIiOoUu";
String input = "Hello World!";
int numVowels = 0;
for (int i = 0; i < input.length; i++) {
char c = input.charAt(i);
if (vowels.indexOf(c) >= 0) {
numVowels++;
}
}
// do something with numVowels
--
将问题分解成简单的步骤
- 定义要查找的元音
- 初始化你的计数器变量 (numVowels)
- 遍历输入字符串并根据 1(元音)中定义的字符检查每个字符。
- 对于找到的每个元音,递增计数器变量。
public class Vowels {
public static void main(String[] args) {
Map<Character, Integer> vowels = new HashMap<>();
Scanner sc = new Scanner(System.in);
System.out.print("Please enter any word: "); //"charActer";
String str = sc.nextLine();
for (int i = 0; i < str.length(); i++) {
Character c = str.charAt(i);
if (c == 'a'
|| c == 'A'
|| c == 'e'
|| c == 'E'
|| c == 'i'
|| c == 'I'
|| c == 'o'
|| c == 'O'
|| c == 'u'
|| c == 'U') {
if (vowels.containsKey(c)) {
vowels.put(c, vowels.get(c) + 1);
} else {
vowels.put(c, 1);
}
}
}
for (Map.Entry<Character, Integer> entry : vowels.entrySet()) {
System.out.print(entry.getKey() + "=" + entry.getValue() + " ");
}
}}
Input : charActer
Output : a=1 A=1 e=1
我在用数组实现 charAt 时遇到了一些麻烦。我是 Java 的初学者(我想这是我唯一的编码经验)。
objective:创建一个程序,用户输入任意字符串,并在输出中记录元音的总数(区分大小写)
示例: 输入:字符 输出: 一 = 1 一个= 1 e = 1
import java.util.Scanner;
public class HW5 {
public static void main(String[] args) {
String [] alphabets =
{"aAbBcCdDeEfFgGhHiIjJkKlLmMnNoOpPqQrRsStTuUvVwWxXyYzZ"};
String vowels = "aAeEiIoOuU";
int found = 0;
Scanner sc = new Scanner(System.in);
System.out.print("Please enter any word: ");
String inputStr = sc.nextLine();
for(int i=0;i<alphabets.length;i++)
{
if(alphabets.charAt[i] == vowels)
*注:程序未完成
您需要检查 inputStr
的每个字符(不知道 alphabets
在您的代码中是关于什么的)并查看是否可以在 vowels
字符串中找到它。
String vowels = "aAeEiIoOuU";
int found = 0;
Scanner sc = new Scanner(System.in);
System.out.print("Please enter any word: ");
String inputStr = sc.nextLine();
for (int i = 0; i < inputStr.length(); i++) {
if (vowels.indexOf(inputStr.charAt(i)) >= 0) {
found += 1;
}
}
如果您在理解方法或 class 时遇到困难,documentation 会很有帮助。
话虽如此,有很多方法可以计算字符串中的元音。
您的输出表明您需要每种情况下每个元音的计数,而不仅仅是所有元音的计数。为此,您需要一张地图以便跟踪。
考虑类似
String input = "A string with vowels in it";
Map<Character, Integer> counts = new HashMap<≥();
for (int i = 0; i < input.length; i++) {
char c = input.chart(i);
if (c == 'a') {
int tmp = counts.getOrDefault('a', 0);
tmp++;
counts.put('a', tmp);
} else if (c == 'A') {
// same logic as above for uppercase A
} // other else if statements for e, E, i, I, o, O, u, U
}
// the map has all counts per vowel / case
地图获得所有计数后,您可以迭代其条目集以打印您需要的输出
for (Map.Entry<Character, Integer> e : counts. entrySet()) {
System.out.println(e.getKey() + " = " + e.getValue());
}
如果您只需要值的数量而不需要将其分解为哪些元音,请考虑类似(未测试)
String vowels = "AaEeIiOoUu";
String input = "Hello World!";
int numVowels = 0;
for (int i = 0; i < input.length; i++) {
char c = input.charAt(i);
if (vowels.indexOf(c) >= 0) {
numVowels++;
}
}
// do something with numVowels
--
将问题分解成简单的步骤
- 定义要查找的元音
- 初始化你的计数器变量 (numVowels)
- 遍历输入字符串并根据 1(元音)中定义的字符检查每个字符。
- 对于找到的每个元音,递增计数器变量。
public class Vowels {
public static void main(String[] args) {
Map<Character, Integer> vowels = new HashMap<>();
Scanner sc = new Scanner(System.in);
System.out.print("Please enter any word: "); //"charActer";
String str = sc.nextLine();
for (int i = 0; i < str.length(); i++) {
Character c = str.charAt(i);
if (c == 'a'
|| c == 'A'
|| c == 'e'
|| c == 'E'
|| c == 'i'
|| c == 'I'
|| c == 'o'
|| c == 'O'
|| c == 'u'
|| c == 'U') {
if (vowels.containsKey(c)) {
vowels.put(c, vowels.get(c) + 1);
} else {
vowels.put(c, 1);
}
}
}
for (Map.Entry<Character, Integer> entry : vowels.entrySet()) {
System.out.print(entry.getKey() + "=" + entry.getValue() + " ");
}
}}
Input : charActer Output : a=1 A=1 e=1