使用||或If语句中的运算符以及字符

时间:2018-02-21 14:36:40

标签: java

我对编程非常陌生,而且我在编写程序方面遇到了一些麻烦,我用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实现它。

4 个答案:

答案 0 :(得分:2)

see this Answer

对于大写和小写,您可以将您的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
}