我对编程非常陌生,而且我在编写程序方面遇到了一些麻烦,我用Java编写程序来帮助计算课程的最终成绩。程序的这一部分询问我希望收到哪个字母等级,然后确定该输入是否有效。例如,如果我输入键盘我想要收到" Z"的字母等级,因为那不是有效等级,我希望我的程序输出"输入无效&#34 ;并退出。我在下面编写的代码不产生任何语法错误,但它输出" Invalid Input"对于我选择的每个字母等级,甚至是A,B和C(输入应该是有效的)。任何帮助理解什么是错误都是非常受欢迎的。
Scanner input = new Scanner(System.in);
char desiredGrade
System.out.print("What letter grade do you want to achieve for the course? ");
desiredGrade = input.next().charAt(0);
if (desiredGrade != 'A' || desiredGrade != 'B' || desiredGrade != 'C'){
System.out.println("Invalid Input");
System.exit(0);
}
除此之外,不必担心输入的区分大小写是有帮助的。我知道我可以使用.ignoreCase()或.equalsIgnoreCase()和字符串,但我不太确定如何用char实现它。
答案 0 :(得分:2)
对于大写和小写,您可以将您的char包装在Character中,然后调用toLowerCase
并检查输入和Lowercase上的预期值。
在你的例子中
desiredGrade != 'A' || desiredGrade != 'B' || desiredGrade != 'C'
如果你想使用||
运算符,你必须这样做
if(!(desiredGrade == 'A' || desiredGrade == 'B' || desiredGrade == 'C')){
}
这样你检查输入是A,B还是C,如果不是那么exit
答案 1 :(得分:1)
让我们说desiredGrade = 'A'
if (desiredGrade != 'A' || desiredGrade != 'B' || desiredGrade != 'C'){
第一个条件是假的,但第二个和第三个条件是真的。所以
if (false || true || true)
将始终在true
。
这样做的方法是使用运算符AND&&
if (desiredGrade != 'A' && desiredGrade != 'B' && desiredGrade != 'C'){
这样,如果用户决定输入“A'操作将是
if (false && true && true){
导致false
。如果用户输入' Z',则操作将是
if (true && true && true){
这将导致true
并执行Invalid input
输出。
修改强>
正如已经提到的那样。用户可以输入' (小写)条件desiredGrade = 'A'
将false
'a' != 'A'
,因为.cart-body
(不相等)。
因此,在if语句之前将desiredGrade转换为大写是明智的。
答案 2 :(得分:1)
试试
const express = require('express');
const app = express();
const exphbs = require('express-handlebars');
const serveIndex = require('serve-index');
app.use('/presentations', express.static('./presentations'), serveIndex('./presentations', {
icons:true,
stylesheet:'styles.css',
view:'details',
template: (locals,cb) => {
cb(null,
app.render('dir',{'title':'Presentations'},(err,html) => {
if(err) {console.log(err)};
console.log(html);
return html;
})
)
}
}));
基本上,你想检查是否希望Grade与A 和不同于B 和不同于C,打印出无效输入。
答案 3 :(得分:0)
试试这个:
if (! Arrays.asList ('A', 'B', 'C').contains (Character.toUpperCase (desiredGrade))) {
// your error handling
}