[英]Trouble with comparing Char from two different strings
該程序應該是一個包含 10 個不同單詞的詞匯表測試。 我的代碼除了一件事之外都在工作,並且這是一個允許用戶獲得輸出說“幾乎正確,正確答案是......”的函數,如果某些字符是正確的。
例如; 正確答案是房子。
user writes: housq -> output = "Almost correct, the correct answer is..."
user writes hsasa -> output = "Wrong, the correct answer is..."
我的計划是通過 int count 將“幾乎正確”放在值 1-3 之間的范圍內。
但是有了這個循環:它只計算拼寫正確的單詞,例如
Correct word is house.
input -> house -> count=5
input -> housa -> count=0.
我是 Java 新手,對於潛在的錯誤代碼,我向大家道歉。
Scanner scanner = new Scanner(System.in);
String inputString = "";
String[] eng = {"car", "house", "run", "blue", "bake", "jump", "swim", "moon", "road", "kind"};
String[] swe = {"bil", "hus", "springa", "blå", "baka", "hoppa", "simma", "måne", "väg", "snäll"};
int result = 0;
int word = 0;
int count = 0;
int low = 2;
int high = 3;
for (int i = 0; i < swe.length; i++) {
System.out.println(swe[i]);
inputString = scanner.nextLine().trim();
if (inputString.equalsIgnoreCase(eng[i])) {
word++;
result++;
System.out.println("Korrekt! " + result + " rätt av " + word + " ord.");
for (int j = 0; j < inputString.length(); j++) {
if (inputString.charAt(j) == eng[i].charAt(j)) {
++count;
}
}
if(count >= low){
System.out.println("Nästan rätt, korrekt svar är " + eng[i]);
word++;
}
if(count > low && count < high){
System.out.println("Nästan rätt, korrekt svar är " + eng[i]);
word++;
}
if (count == 0) {
System.out.println("fel, rätt svar är " + eng[i]);
word++;
}
System.out.println(count);
if (inputString.equalsIgnoreCase("Q")) {
System.out.println("Du svarade på totalt " + word + " glosor och hade " + result + " rätt. Välkommen åter!");
System.exit(0);
}
count = 0;
}
}
}}
我像這樣嘗試了你的這個代碼片段,我得到了正確的輸出。 這是我嘗試過的
String inputString = "housr";
String eng = "house";
int count = 0;
for(int j=0; j < inputString.length(); j++) {
if(inputString.charAt(j) == eng.charAt(j)){
++count;
}}
System.out.println(count);
我的輸出為4
你在嘗試什么,請粘貼你的邏輯和數據
問題在於你的 if 條件
if (inputString.equalsIgnoreCase(eng[i]))
它檢查相等條件,如果您的輸入字符串和 eng[i] 相等,那么只有您的代碼執行,在您的情況下,您在housq 中的輸入,您永遠不會在 eng 數組中找到該單詞,它會跳過 for 循環,count 將是您的初始化值即 0
您是否有任何特定原因使用 if 條件
而在這一行
if (inputString.charAt(j) == eng[i].charAt(j))
如果您的輸入字符串大小和 eng[i] 字符串大小不相等,您將收到StringIndexOutOfBoundsException異常。
通過對您的代碼稍作更改,我可以使其工作以獲得所需的輸出
Scanner scanner = new Scanner(System.in);
String inputString = "";
String[] eng = {"car", "house", "run", "blue", "bake", "jump", "swim", "moon", "road", "kind"};
String[] swe = {"bil", "hus", "springa", "blå", "baka", "hoppa", "simma", "måne", "väg", "snäll"};
int result = 0;
int word = 0;
int count = 0;
int low = 2;
int high = 3;
for (int i = 0; i < swe.length; i++) {
System.out.println(swe[i]);
inputString = scanner.nextLine().trim();
if (inputString.equalsIgnoreCase(eng[i])) {
word++;
result++;
System.out.println("Korrekt! " + result + " rätt av " + word + " ord.");
}
if(inputString.length() == eng[i].length()){
for (int j = 0; j < inputString.length(); j++) {
if (inputString.charAt(j) == eng[i].charAt(j)) {
++count;
}
}
}
if(count >= low){
System.out.println("Nästan rätt, korrekt svar är " + eng[i]);
word++;
}
if(count > low && count < high){
System.out.println("Nästan rätt, korrekt svar är " + eng[i]);
word++;
}
if (count == 0) {
System.out.println("fel, rätt svar är " + eng[i]);
word++;
}
System.out.println(count);
if (inputString.equalsIgnoreCase("Q")) {
System.out.println("Du svarade på totalt " + word + " glosor och hade " + result + " rätt. Välkommen åter!");
System.exit(0);
}
count = 0;
}
}
這里我的輸入是housq
我得到的輸出是
fel, rätt svar är car
0
Nästan rätt, korrekt svar är house
4
fel, rätt svar är run
0
fel, rätt svar är blue
0
fel, rätt svar är bake
0
fel, rätt svar är jump
0
fel, rätt svar är swim
0
fel, rätt svar är moon
0
fel, rätt svar är road
0
fel, rätt svar är kind
0
public static void spel() {
Scanner scanner = new Scanner(System.in);
String inputString = "";
String[] eng = {"car", "house", "run", "blue", "bake", "jump", "swim", "moon", "road", "kind"};
String[] swe = {"bil", "hus", "springa", "blå", "baka", "hoppa", "simma", "måne", "väg", "snäll"};
int result = 0;
int word = 0;
int count = 0;
int low = 2;
int high = 3;
for (int i = 0; i < swe.length; i++) {
System.out.println(swe[i]);
inputString = scanner.nextLine().trim();
if(inputString.equalsIgnoreCase(eng[i])) {
word++;
result++;
System.out.println("Korrekt! " + result + " rätt av " + word + " ord.");
}
for (int j = 0; j < inputString.length(); j++) {
if (inputString.charAt(j) == eng[i].charAt(j)) {
++count;
}
}
if(count >= low){
System.out.println("Nästan rätt, korrekt svar är " + eng[i]);
word++;
}
if (count == 0) {
System.out.println("fel, rätt svar är " + eng[i]);
word++;
}
System.out.println(count);
if (inputString.equalsIgnoreCase("Q")) {
System.out.println("Du svarade på totalt " + word + " glosor och hade " + result + " rätt. Välkommen åter!");
System.exit(0);
}
count = 0;
}
}}
有了這個更新的代碼。 當大部分字符正確時,我得到正確答案。 例如 housa = 4 -> "幾乎正確...."
但是當 inputString 和 eng[i].length 的大小不同時,我仍然遇到問題。 而且當 inputString 是正確答案時,“正確消息”和“幾乎”都顯示..
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.