【问题标题】:How do I read different inputs from scanner in Java?如何从 Java 中的扫描仪读取不同的输入?
【发布时间】:2016-10-09 16:31:16
【问题描述】:

我需要获取各种整数输入,然后当输入-1 时,程序应该显示最大、最小、所有输入的总和、所有输入的值的数量以及所有输入的平均值。我已经开始一个循环来获取各种输入,但找不到合适的方式来读取它们然后玩它们。我在互联网上到处搜索。

import java.util.Scanner;

public class Exercise16 {
    public static void main(String[] args) {

        Scanner s = new Scanner(System.in);

        System.out.println("Please enter a Positive integer or -1 to quit.");

        while (!s.nextLine().equals("-1")) {
            System.out.println("Please enter a Positive integer or -1 to quit.");
        }
    }
}

【问题讨论】:

  • SO 不是那种“做我的功课”的地方。但是想想实际存储用户输入的字符串(ArrayList?)。
  • 使用 s.nextInt() 并跟踪输入的每个数字[最大、最小和平均值]。

标签: java loops java.util.scanner


【解决方案1】:

s.nextLine() 读取您的输入

你应该把它保存到一个变量中。

同时使用 do-while 来防止复制的 print 语句

Scanner s = new Scanner(System.in);
String in;  // where to save next input value 

do {
    System.out.println("Please enter a Positive integer or -1 to quit.");
    in = s.nextLine();
    // TODO: parseInt, check for positive number 
}  while (!in.equals("-1"));

如果要跟踪最小值和最大值,则需要两个额外的整数值。

如果您想跟踪平均值,您需要一个列表。

祝你好运

【讨论】:

  • 如果我没记错的话,还有一个.nextInt().nextDouble() 等等所有原始数据类型,它们可以巧妙地将您的数据解析成这样的格式,或者等到您使用正确的格式数据类型。
  • 有,但是对于初学者来说,他们没有意识到使用这些方法时不会消耗换行符
【解决方案2】:

您首先需要从命令行读取整数。为此,您必须使用

s.nextInt();

一旦你得到这个,你必须得到最大和最小的数字,你可以使用 2 个变量来获得这些。

平均而言,您可以存储总和和用户要求输入的次数,还有 2 个变量。无需将元素存储在列表或其他存储中。

如果您想查看输入的数字而不是必须存储的数字,则您不必存储。

用于存储用途:

List<Integer> numbers = new ArrayList<Integer>();

添加数字可以使用 List 的 add 方法。

public static void main2() {
        Integer laregst = Integer.MIN_VALUE;
        Integer smallest = Integer.MAX_VALUE;
        Integer sum = 0;
        Integer count =0 ;
        Scanner s = new Scanner(System.in);
        int temp = s.nextInt();
        while (temp != -1) {
            if(temp > laregst){
                laregst = temp;
            }

            if(temp < smallest){
                smallest = temp;
            }

            sum += temp;
            count += 1;

            System.out.println("Please enter a Positive integer or -1 to quit.");
            temp = s.nextInt();
        }
        System.out.println("Largest : "+(count == 0?"NA":laregst)+" Smallest : "+(count == 0?"NA":smallest)+" Mean : "+(count == 0 ? "NA" : ((sum *1.0/count))));
    }

【讨论】:

    【解决方案3】:

    如果您不想在同一行中读取多个整数值,您可以使用 s.nextInt() 每次读取一个整数值

    【讨论】:

      猜你喜欢
      • 2019-12-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-01-07
      相关资源
      最近更新 更多