仅使用一种扫描仪方法即可获得多个值?

时间:2019-04-06 12:48:17

标签: java methods java.util.scanner

我有一项作业,我需要使用用户输入的数据以单独的方法进行某些计算。我的问题是用户输入。应该用一个单独的方法来完成(我不认为我可以使用数组来存储输入)。用户应该能够输入所需的任意多个值,然后使用“ q”退出。然后程序应采用前两个数字,例如面积和体积(使用我未在此处包括的其他方法),显示结果,获取用户输入的下两个数字,计算并显示结果。应该重复此过程,直到达到“ q”值。例如:

    Enter your values: 9 5 3 7 q
    radius: 9 height: 5
    Area = 254
    Volume = 424

    radius: 3 height: 7
    Area = 28
    Volume = 65

我遇到的一个问题是,即使第一个变量还剩下更多的数字,用户也必须为下一个变量再次输入数据。

import java.util.Scanner;

public class Stack {
   private static Scanner input = new Scanner(System.in);

   public static void main(String[] args) {

      int radie, height;

      radie = userInput("");
      height = userInput("");

   }

   public static int userInput(String message) {
      int number = Integer.MAX_VALUE;

      while (number == Integer.MAX_VALUE) {
         System.out.print(message);
         if (input.hasNextInt()) {
            number = input.nextInt();

         }
         input.nextLine();
      }
      return number;
   }
}

我知道这里的代码中存在大量缺陷,我很迷失,甚至不确定从哪里开始解决问题。任何帮助或提示都非常欢迎!预先感谢!

2 个答案:

答案 0 :(得分:0)

您是否阅读了'Scanner.hasNextInt()'方法文档? 上面写着: 返回值: 当且仅当此扫描器的下一个标记是有效的int值时,才返回true

那么问

 number == Integer.MAX_VALUE

没有感觉。

尝试询问hasNextInt() 返回true或false

编辑:也 为什么您认为数字后总是“ q”?

更改while语句中的条件

答案 1 :(得分:0)

不太了解您的意思,但是我做了一些更改:

Enter your values:
1 2 3 4 5 6 7 8
radius: 1
height: 2
radius: 3
height: 4
radius: 5
height: 6
radius: 7
height: 8
Enter your values:
1 q
radius: 1
Stopped.

Process finished with exit code 0

影响:

dita-ot-3.3/plugins
   |
   +-- com.acme.html5.param
   |     |
   |     +-- plugin.xml
   |         buildHtml5Param.xml
   |
   +-- com.acme.html5
         |
         +-- plugin.xml
         |
         +--xsl
             |
             +-- dita2html5_acme_custom.xsl