【问题标题】:How to use Java to write a program that read a sequence of integer inputs?如何使用 Java 编写读取整数输入序列的程序?
【发布时间】:2016-01-29 00:02:21
【问题描述】:

使用 Java 编写程序读取输入并打印出最小和最大数字的最简单方法是什么?偶数和奇数输入的数量呢?

For 循环是必需的,它需要允许用户退出循环。这是我到目前为止得到的(可能是错误的):

import java.util.Scanner;

public class E62a
 {
   public static void main(String[] args)
   {
    Scanner in = new Scanner(System.in);
    System.out.println("Enter numbers");
    int number = in.nextInt();
    int number2 = in.nextInt();
    for(int counter = counter % 2; counter <= 6; counter++)
    {
        System.out.println(number);
        System.out.println(number2);
    }
}        

}

【问题讨论】:

  • 与其说"may be wrong" -- 你在测试时看到了什么结果?
  • 真的需要看看如何初始化一个for循环..
  • 如果您正在寻找语法,那么只需 google 一下。否则,请完整发布您的代码并告诉我们您在运行代码时遇到的错误。
  • @bhspencer 每个人都必须从某个地方开始。格式错误的问题并不意味着恶意;寻求解决方案而不是答案;据我所知,他没有那样做。
  • @Zhang 欢迎来到 SO。这是一个问答网站,所以很好地组织你的问题很重要。在您的情况下,您最好将问题的主要主题分解为单独的独立问题,在您的最后,并查看它们是否已经得到回答(搜索框是您的朋友);仅当您对特定问题没有满意的答案时才提出新问题。

标签: java helper


【解决方案1】:

什么是最简单的方法(...)

在编程中,几乎没有一种“最简单的方法”来做任何需要多于几个命令的事情。 “简单”的含义取决于具体情况。


如何编写一个可以读取(控制台)输入的 Java 程序?

你已经找到方法了:

Scanner in = new Scanner(System.in);
//...
in.nextLine(); //or nextInt(), or whatever else...

还有……

BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
//...
String input = br.readLine();

...这是我通常使用的。而且可能还有其他方法……


如何找到/打印出最小和最大的数字(两个数字之间)?

一个简单的IF-THEN-ELSE 结构就可以了。在 Java 中,这将是:

if (numA <= numB) { min = numA; max = numB; } else {min = numB; min = numA; }

您还可以使用 Java 的(非常干净和方便的)内置方法:

min = Math.min(numA,numB); max = Math.max(numA,numB);

您已经知道如何打印...System.out.print().println()


偶数和奇数输入的数量如何?

我不确定您的意思,但如果您的意思是多个输入(超过两个),您首先必须决定用户如何输入输入;就像在单行中一样,由空格或逗号或其他类型的separator character 分隔,或者作为多行,在这种情况下,您将需要 trigger string 来告诉程序输入已经结束并且处理应该继续/跟随.

在单行 + 分隔符的情况下,您的程序将是干净且高度可维护的,因为输入的处理几乎完全与界面(控制台)解耦,但您需要解析生成的字符串将输入彼此分开。

在多行 + 触发器的情况下,您将能够在输入时使用单独的输入填充数组,但控制台会变得很混乱,并且与处理的耦合度要高得多。


最后但同样重要的是,学习编程语言的最佳方法是:

  1. 阅读官方文档。 Java 8 docs
  2. 当您有疑问时使用 Google 搜索(编程中的问题就像第 34 条规则;有人遇到过同样的问题,并已在网上某处发布了答案)。
  3. 正在试验。熟能生巧,因为它可以让您亲身体验和理解问题及其解决方案。
  4. 询问。即使您在任何地方都找不到答案,和/或无法在自己的实验中找到解决方案,编程社区,特别是我们这里的 SO(我认为),通常都是思想开放的好人,他们是愿意帮助您找到答案来解决您的疑惑;只是不要试图将您的工作推给我们,或期望您可以复制并粘贴到您的项目/家庭作业中的解决方案

干杯,祝你好运!

【讨论】:

    【解决方案2】:

    你想用int counter = counter % 2 做什么?这实际上告诉程序,“创建一个等于其当前值除以 2 的余数的整数。”这是不可能的。 counter = counter % 2 只能在 counter 之前被初始化的情况下工作。

    您的for 循环没有为用户提供手动退出的方法。要允许用户手动退出循环,您需要编写它以接受循环内的用户输入并提供退出条件。以下是您如何做到这一点的一个示例:

    Scanner in = new Scanner(System.in);
    Integer input;
    ArrayList<Integer> numbers = new ArrayList<>();
    
    for (int i=0; i<=6; i++) {
        System.out.print("Enter a number or enter -1 to exit: ");
        input = in.nextInt();
        if (input != -1) {
            numbers.add(input);
        } else {
            break;
        }
    }
    

    这将允许用户输入最多六个数字并可以选择退出。由于在此示例中numbersArrayList,因此可以使用get() 函数从中检索项目。例如,System.out.println(numbers.get(0)) 将显示添加到numbers 的第一个数字。

    确定最小和最大数字可以这样完成:

    int largest = -1;
    int smallest = -1;
    for (int i=0; i<numbers.size(); i++) {
        if (numbers.get(i) > largest) {
            largest = numbers.get(i);
        }
        if ((numbers.get(i) < smallest) || (smallest == -1)) {
            smallest = numbers.get(i);
        }
    }
    

    这部分代码将计算偶数和奇数输入的数量:

    int evenNumbers = 0;
    int oddNumbers = 0;
    for (int i=0; i<numbers.size(); i++) {
        if ((numbers.get(i) % 2) == 0) {
            evenNumbers++;
        } else {
            oddNumbers++;
        }
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-04-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多