该程序被假定为词汇测试,包含10个不同的单词。我的代码除了一件事之外都在工作,并且它是一个函数,如果某些字符正确,则该函数允许用户获得输出“几乎正确,正确答案是...”。
例如;正确的答案是房子。
user writes: housq -> output = "Almost correct, the correct answer is..."
user writes hsasa -> output = "Wrong, the correct answer is..."
我的计划是将int计数中的“几乎正确”的值放在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;
}
}
}}
答案 0 :(得分: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
您正在尝试什么,请也粘贴您的逻辑和数据
答案 1 :(得分:0)
问题与您的if条件有关
if (inputString.equalsIgnoreCase(eng[i]))
它检查是否相等,如果您的输入字符串和eng [i]相等,则仅执行代码,在您的情况下,您在 housq 中输入,而您在eng数组中找不到该单词它会跳过for循环,而count将是您的初始值,即0
您是否有任何特定原因使用条件
在这一行
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
答案 2 :(得分: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是正确答案时,也会显示“正确消息”和“几乎”。