当前位置: 首页 > 知识库问答 >
问题:

如何使数字无效

燕实
2023-03-14

创建一个名为minusSentinel2的新程序。

提示用户输入1到100之间的整数。允许用户输入任意数量的数字。

如果输入了无效的数字,打印“无效输入”再次提示用户,直到输入有效的数字。

输入 -1 后,程序停止并打印输入的最大数字,并显示文本“输入的最大数字是:”

我在“无效输入”上遇到了一些麻烦部分。当我键入大于100的数字时,“无效输入”不会被打印出来。我该如何解决这个问题?谢谢大家!

import java.util.*;
public class minusSentinel2
{
    public static void main (String[] args)
    {
        Scanner console = new Scanner(System.in);
        System.out.println("Enter a number between 1-100 (type -1 to quit):");
        int number = console.nextInt();
        int max = number;
        if (number < 1 && number > 100)//chekcs if value is valid
        {
            System.out.println("Invalid entry.");
            System.out.println("Enter a number between 1-100 (type -1 to quit).");
            console.next();
        }
        while (number != -1)
        {
            number = console.nextInt();
            if (number > max)
            {
                max = number;
            }
        }
        System.out.print("The largest number entered is: " + max);
    }
}

共有1个答案

唐修能
2023-03-14

首先,我建议你不要复制和粘贴我们要求你做的,而只是用必要的部分为我们重新制定。

对于您的问题,此条件是错误的:

if (number < 1 && number > 100)

它对应于“小于1且大于100”。

因此,代替< code >

if (number < 1 || number > 100) {
   // it's not valid because lower than 1 or greater than 100
}

最后,你所做的似乎还有另一个问题。如果您输入了一个无效的数字,它将只再次询问一次,而不是相同的新值。因此,我建议您像这样使用while循环:

int number = 0;
while(number < 1 || number > 100) {
    number = console.nextInt();
    if (number < 1 || number > 100) {
        System.out.println("Invalid entry.");
        System.out.println("Enter a number between 1-100 (type -1 to quit).");
    }
}
int max = number;

最后,这是完整的代码:

Scanner console = new Scanner(System.in); // create scanner
int number = 0; // create new variable that will be used outside of while loop
while (number < 1 || number > 100) { // while the number isn't valid
    System.out.println("Enter a number between 1-100 (type -1 to quit):");
    number = console.nextInt(); // wait for user input
    if (number == -1) { // stop program
        console.close();
        return;
    } else if (number < 1 || number > 100) { // number invalid
        System.out.println("Invalid entry.");
    }
}

System.out.println("Now enter all number that you want. End with -1.");

int max = number; // create new max value
while (number != -1) {
    number = console.nextInt();
    if (number < 1 || number > 100) { // number invalid
        System.out.println("Invalid entry.");
    } else if (number > max) { // if number is upper than current one
        max = number;
        // here you can do something like that:
        // System.out.println("New max value: " + max);
    } else {
        // the value is value but not upper than current one, so we can write:
        // System.out.println("This value isn't upper to " + max);
    }
}
System.out.print("The largest number entered is: " + max);
console.close();
 类似资料:
  • 问题内容: 我有这个电话号码: 使用后,我得到: 但是我想要的是: 任何想法我如何使这项工作? 谢谢。 问题答案: 将始终这样做,您唯一的解决方案是为它提供不同的内容: 要么:

  • 问题内容: 我正在使用Java StreamTokenizer提取字符串的各种单词和数字,但是遇到了一个问题,其中涉及到逗号在内的数字,例如10,567被读为10.0和,567。 我还需要从可能会出现的数字中删除所有非数字字符,例如$ 678.00应该是678.00或-87应该是87。 我相信可以通过whiteSpace和wordChars方法实现这些目标,但是有人知道如何实现吗? 当前基本的st

  • 这听起来有点令人困惑,我不知道如何用语言表达,但我很难找到这个问题的解决方案。 我想按行“分组”,并使用数字相同的“digit”列在表中对行进行计数,而不管数字的位置如何。 例子: 这是桌子 答案是:使用count() 其他详细信息: 数字列为数字 mysql版本是来自cpanel的82。

  • 问题内容: 我正在编写一个与已在使用的Google Analytics(分析)API交互的Angular应用。Google返回的数据以“ ga:”为前缀,例如“ ga:newVisits”示例。 如果我使用表达式{{total.ga:newVisits}},Angular无法解析它。逃避冒号继续的任何尝试均导致错误或完全逃避我的表达。 如何将{{total.ga:newVisits}}传递给Ang

  • 问题内容: 有什么方法可以在Python代码中对数字进行分组以提高代码的可读性?我试过了,这是其他一些语言的 数字分隔符 ,但无济于事。 将左手边与右手边连接起来的怪异运算符也可以解决。 问题答案: 几年后更新:Python 3.6现在支持PEP515,因此您可以使用_来提高浮点数和整数文字的可读性。 作为历史参考,您可以查看严格定义python2.7,python3.5 …的词法分析。 对于py

  • 问题内容: 我有一个领域: 我想在不对其进行“更正”的情况下进行打孔,以便显示。 问题答案: 我对此进行了一些尝试,并查看了规格。它说它必须是一个有效的浮点数。在给出的有效浮点数的定义中有一句话引起了我的注意: 数字n作为浮点数 的 最佳表示形式 是通过将JavaScript运算符ToString应用于n获得的字符串。 这意味着格式将始终与评估数字一致,然后对该数字使用JavaScript的toS