Java 测试字符串的输入 公共类QuizCheck { /** 检查一系列测验答案是否有效。它必须 包含每个预期答案的答案A、B、C或D,或 X表示未提供任何答复。 @param输入答案字符串 @param questions字符串中的问题数 @如果字符串有效,则返回true,否则返回false */ 公共静态布尔校验输入(字符串输入、整数问题) { 布尔校验输入; 对于(问题=0;问题
我的作业在最上面,这就是我所拥有的。我现在无法编译它。我不知道我哪里出错了Java 测试字符串的输入 公共类QuizCheck { /** 检查一系列测验答案是否有效。它必须 包含每个预期答案的答案A、B、C或D,或 X表示未提供任何答复。 @param输入答案字符串 @param questions字符串中的问题数 @如果字符串有效,则返回true,否则返回false */ 公共静态布尔校验输入(字符串输入、整数问题) { 布尔校验输入; 对于(问题=0;问题,java,input,Java,Input,我的作业在最上面,这就是我所拥有的。我现在无法编译它。我不知道我哪里出错了 public class QuizCheck { /** Checks whether a string of quiz answers is valid. It must contain an answer A, B, C, or D for each expected answer, or an X to indicate that no answer was provi
public class QuizCheck
{
/**
Checks whether a string of quiz answers is valid. It must
contain an answer A, B, C, or D for each expected answer, or an
X to indicate that no answer was provided.
@param input the answer string
@param questions the number of questions in the string
@return true if the string was valid, false otherwise
*/
public static boolean checkInputs(String input, int questions)
{
boolean checkInputs;
for (questions = 0; questions < input.Length(); counter--)
{
int letter = word.charAt(questions);
if (letter == 'A' && letter == 'B' && letter == 'C' && letter == 'D' && letter == 'X')
{
checkInputs=true;
}
else
{
checkInputs=false;
}
}
if(isInSet=true)
{
System.out.print("True");
}
else
{
System.out.print("False");
}
}
字母不能同时是'A'、'B'、'C'、'D'和'X',因此此表达式总是false
。请使用|
而不是&
您还有一个问题,就是您根本没有在方法中使用的isInSet
。我认为这应该是
if (letter == 'A' && letter == 'B' && letter == 'C' && letter == 'D' && letter == 'X')
最后,您必须返回值,而不仅仅是打印值。您的方法类型为布尔值,因此它必须始终返回一个值或引发异常。首先,输入不能是'A'
和'B'
,并且…逻辑不正确。您需要逻辑or运算符:
if(checkInputs)
第二,当与true
进行比较时,不要使用赋值运算符=
。使用=
来比较值
if (letter == 'A' || letter == 'B' || ...
或者,因为它已经是一个布尔值
:
if (isInSet == true)
此外,您已声明方法返回一个布尔值
,但当前没有返回任何内容。返回一些内容--可能是checkInputs
值
现在还不清楚isInSet
从何而来。这真的意味着检查输入吗?以下是有意义且有效的代码(仅适用于您的方法):
返回checkInputs;
•首先,isInSet
不是您定义的变量,因此您需要将其更改为checkInputs
。
•其次,您最初没有初始化checkInputs
,因此它也会给您一个错误。同样,当您返回它时,您需要先初始化它。这是因为如果for循环中断,它可能永远不会有值。它需要有一个确定的值。因此我更改了布尔checkInputs
toboolean checkInputs=true;
。这样,除非另有说明,否则它将为true,这将是当任何字母不适用于它时。它现在将始终具有true或false的值
•上次编译错误是int letter=word.charAt(问题);
应该是
int-letter=input.charAt(问题);
你的逻辑
应该是
if(isInSet=true)
if (letter == 'A' && letter == 'B' && letter == 'C' && letter == 'D' && letter == 'X')
您应该比较布尔值,而不是设置布尔值
及
应该是
if(isInSet=true)
if (letter == 'A' && letter == 'B' && letter == 'C' && letter == 'D' && letter == 'X')
字母不能是'A'
,'B'
,'C'
,'D'
和'X'
。如果要测试字母是否为其中任何一个,请使用|
:OR逻辑运算符,而不是&
:and逻辑运算符
但是,假设结构实际上应该是这样的:
if (letter == 'A' || letter == 'B' || letter == 'C' || letter == 'D' || letter == 'X')
这样,它将检查是否有任何字母不等于任何已接受的字母,如果是这种情况,则输入无效
如果你反其道而行之,检查是否有任何字母与例外字母相等,那么有些字母可能有效,有些可能无效,检查起来会更复杂
您没有使用参数questions
。您只是在for循环中将其立即更改为0。因此,首先,检查输入
字符串中的答案是否与问题数量相同:
if (!(letter == 'A' || letter == 'B' || letter == 'C' || letter == 'D' || letter == 'X'))
{
checkInputs = false;
}
if (input.length() == questions) {
// test the letters
} else {
return false; }
其次,在for循环中,创建一个新变量作为for循环计数器,并将其从0计数到问题数:
if (!(letter == 'A' || letter == 'B' || letter == 'C' || letter == 'D' || letter == 'X'))
{
checkInputs = false;
}
if (input.length() == questions) {
// test the letters
} else {
return false; }
for(int-question=0;question
不可能为真,因为一个字符一次只能是一个字符,而不是6个字符
(可能是| | as或?)
什么是isInSet?
此外,这应该是isInSet==true或只是isInSet您缺少的技能如下:使用的运算符不正确,函数类型错误。
如果我们看一下您键入的布尔函数类型,这意味着它在函数中应该返回true或false。
如果不存在返回值,则应将其重命名为void,表示不返回值。
不使用and运算符(&&),而应使用or运算符(| |),因为and运算符意味着如果所有表达式都为true,则执行代码。
如果至少有一个表达式为true(即您要使用的表达式),则or运算符将执行代码。
if(isInSet=true)将一直执行,因为=运算符将值分配给它的右边。
因此,它检查的唯一内容是:如果将true指定给isInSet,则执行下面的代码,该代码将始终使其为true
应该是if(isInSet==true)。==运算符检查右侧是否等于左侧。编译错误是什么?我修复了逻辑错误,将其更改为返回而不是打印。现在唯一的错误是int letter=word.charAt(问题);@user3038538 changeword.charAt(问题)
到input.charAt(问题);
这就是我在看到你回答之前所做的。它现在正在编译。但是当它运行时,如果在
if (input.length() == questions) {
// test the letters
} else {
return false; }
for (int question = 0; question < questions; question++)
for (questions = 0; questions < input.Length(); counter--)
if (letter == 'A' && letter == 'B' && letter == 'C' && letter == 'D' && letter == 'X')
if(isInSet=true)