我正在尝试获取字母,以显示每个输入字母的索引。例如,当我输入while(sqlite3_step(stmt) == SQLITE_ROW){
let email = String(cString: sqlite3_column_text(stmt, 0))
let name = String(cString: sqlite3_column_text(stmt, 1))
let age = sqlite3_column_int(stmt, 2)
let gender = String(cString: sqlite3_column_text(stmt, 3))
userList.append(User(age: Int(age), name: name, email: email, gender: gender))
print("user saved successfully")
}
时,它返回0,这是索引。目前,如果我输入带有字母a
和a
的单词,它将不会返回任何内容。但它应该返回0和1。
b
答案 0 :(得分:2)
你必须以同样的方式对待这两个元素,如:
for (char charFromUser : letters.toCharArray()) {
for (int i=0; i < code.length; i++) {
if (code[i] == charFromUser) {
... print i
换句话说:您打算逐个比较字符。然后在用户提供的完整字符串上使用equals()
对您没有帮助。
答案 1 :(得分:0)
您需要逐个循环输入字符才能返回多个字母的索引号
答案 2 :(得分:0)
尝试这样的想法:
char[] List={'a','b','c','d'};
int count=0;
for(int i=0;i<List.length;i++){
for (int j=0;j<input.length();j++) {
if(input.charAt(j)==List[i]){
count++;
}
}
}
System.out.println(count);
答案 3 :(得分:0)
你可以试试这个agine
public class StringTest {
public static void main(String[] args) {
String[] code = {"a", "b", "c", "d", "e"};
Scanner input = new Scanner(System.in);
while (true) {
System.out.printf("please input:");
String letters = input.nextLine();
boolean isMatch = false;
for (int i = 0; i < code.length; i++) {
if (letters.equals(code[i])) {
isMatch = true;
System.out.println(i);
}
}
if (!isMatch) {
System.out.println("not equal");
}
}
}
}
答案 4 :(得分:0)
作为@GhostCat answered,您不是要逐个比较输入中的字符与数组中的值。另一种方法是使用内置的String::indexOf
方法让这更容易:
String code = "abcde";
String letters = input.nextLine();
for (char c : letters.toCharArray()) {
System.out.print(code.indexOf(c));
}
- 输入&gt;&gt; AB
- 输出&gt;&gt; 01