我想分别对“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:我无法使用scanner
,console
或DataInputStream
。所以请BufferedReader
帮助我。
答案 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());
}
}