只有一种扫描仪方法的多个值?

问题描述 投票:0回答:2

我有一项任务,我需要使用用户输入的数据在单独的方法中进行某些计算。我的问题是用户输入。它应该用一个单独的方法完成(我不认为我可以使用数组来存储输入)。用户应该能够输入他们想要的任意数量的值,然后以“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;
   }
}

我知道我的代码存在很大的缺陷,我很丢失,不知道从哪里开始解决问题。我们非常欢迎任何帮助或提示!提前致谢!

java methods java.util.scanner
2个回答
0
投票

您是否阅读过“Scanner.hasNextInt()”方法文档?写成:返回:当且仅当此扫描器的下一个标记是有效的int值时才返回true

所以问题是否

 number == Integer.MAX_VALUE

没有意义。

试着询问hasNextInt()是返回true还是false

编辑:另外为什么你认为数字后总是'q'?

在while语句中更改条件


0
投票

真的不明白你的意思,但我做了一些改变:

import java.util.Scanner;

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

    public static void main(String[] args) {
        userInput();
    }

    public static void userInput() {
        while (true) {
            System.out.println("Enter your values:");
            String message = input.nextLine();
            //Split data with space
            String[] data = message.split(" ");
            int pointer = 2;
            for (String i : data) {
                if (i.equals("q")) {
                    System.out.println("Stopped.");
                    System.exit(0);
                }
                if (pointer % 2 == 0) {
                    System.out.println("radius: " + i);
                }
                if (pointer % 2 == 1) {
                    System.out.println("height: " + i);
                }
                pointer++;
            }
        }
    }
}

影响:

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
© www.soinside.com 2019 - 2024. All rights reserved.