如何以这种方式接受Java输入?

时间:2013-11-05 16:07:22

标签: java input

我想分别对“Box”类的长度,宽度和高度进行输入。现在我想将它作为整数流,然后将它们分别设置到框的每个维度。流将被视为i / p直到用户按下0.所以我这样写(我只是提到主要方法,我单独定义了盒子类):

public static void main(String args[])
{

    System.out .print("Enter length, breadth and height->> (Press '0' to end the i/p)");
    BufferedReader br=new BufferedReader(new InputStreamReader(System.in));
    while((br.read())==0)
    {
        // What should I write here to take the input in the required manner?
    }
}

PS:我无法使用scannerconsoleDataInputStream。所以请BufferedReader帮助我。

3 个答案:

答案 0 :(得分:2)

是否有一个特殊原因你不只是使用Scanner?它为您标记和解析值:

Scanner sc = new Scanner(System.in);
int width = sc.nextInt();
int height = sc.nextInt();

答案 1 :(得分:2)

由于您表示绝对必须使用BufferedReader,我相信一种方法是使用BufferedReader#readLine()方法。这将为您提供用户输入的完整行,直到行终止(根据the documentation,'\ n'或'\ n')。

正如Zong Zheng Li已经说过的那样,虽然Scanner类可以为你输入行代码,但由于你不能使用它,你必须自己手动完成。

此时,一种让人想到的方法就是简单地分割出一个空格(\ s)字符。所以你的代码看起来像这样:

System.out .print("Enter length, breadth and height->> (Press '0' to end the i/p)");
BufferedReader br=new BufferedReader(new InputStreamReader(System.in));
String inputLine = br.readLine(); // get user input

String[] inputParts = inputLine.split("\\s+"); // split by spaces

int width = Integer.parseInt(inputParts[0]);
int height = Integer.parseInt(inputParts[1]);
int breadth = Integer.parseInt(inputParts[2]);

请注意,我没有显示任何错误或范围检查或输入验证,因为我只是展示一般示例。

我确信还有很多其他方法可以做到这一点,但这是我脑子里浮现的第一个想法。希望它有所帮助。

答案 2 :(得分:0)

也许你可以试试这个。

public static void main(String args[])
{
    String input = 0;
    ArrayList<int> list = new ArrayList<int>();
    boolean exit = true;
    System.out.print("Enter length, breadth and height->> (Press '0' to end the i/p)");
    try {
       BufferedReader br=new BufferedReader(new InputStreamReader(System.in));
       while((input = br.readLine()!=null && exit)
       { 
         StringTokenizer t = new StringTokenizer(input);
         while(t.hasMoreToken()){
             if(Integer.parseInt(t.nextToken()) != 0){
                list.add(input);
             }
             else{
                exit = false;
             }
         }

       }
       //list contains your needs. 
    } catch(Exception ex) {
       System.out.println(ex.getMessage());
    }
}