我正在编写一个主要方法,要求用户以锥体的半径和高度的形式输入,然后调用其他3种数学方法来确定锥体底部的区域,以及它的表面积和体积。
这个想法是你应该能够输入几组输入,并通过输入" q"表示你已经完成了。示例输入可以例如是" 10 5 6 8 7 5 q"。然后程序应该计算三次,有两组半径和高度,然后打破循环。相反,它忽略了前两个输入,并完美地完成了剩下的四个输入。它基本上计算n-1组高度和半径,其中n是提供的集合数。我非常感谢你的帮助。
base_estimator_
答案 0 :(得分:1)
您的代码问题在于您从未使用int
循环中扫描的前两个while
。这样做:
while (true) //Infinite loop
{
if (scan.hasNextInt()) //If next input is an integer, read it
{
radius = scan.nextInt();
height = scan.nextInt();
} else if (scan.next().equals("q")) break;
System.out.print(radius);
System.out.println(height);
}`
或者,只需检查int
:
int radius;
int height;
//provided user would be entering radius and height in pairs
while (scan.hasNextInt()) {
radius = scan.nextInt();
height = scan.nextInt();
//Call your methods
}
或者,由于您不知道用户输入的参数数量,因此最好为半径和高度创建ArrayList
并向列表添加输入然后处理它们从列表中。这有助于您在退出while
循环后保留输入:
ArrayList<Integer> radiusList = new ArrayList<>();
ArrayList<Integer> heightList = new ArrayList<>();
while (scan.hasNextInt()) {
radiusList.add(scan.nextInt();
heightList.add(scan.nextInt());
}
int radius;
int height;
for (int i = 0; i < radiusList.size(); i++) {
radius = radiusList.get(i);
height = heightList.get(i);
//Call your methods.
}
答案 1 :(得分:1)
您最初读的是两个整数。但是,这两个整数从未在您的程序中使用过。因此,他们被扔掉了。
要么消除第二个循环并向上移动输出。或者,在第二次循环之前复制输出。
答案 2 :(得分:0)
while(true) //Infinite loop
{
if (scan.hasNextInt()) //If next input is an integer, read it
{
radie = scan.nextInt();
height = scan.nextInt();
}
else if (scan.next().equals('q'))
{ //If it instead if "q", break the loop
break;
}
System.out.print("r = "+radius);
System.out.println("h = "+height);
System.out.println("Bottom area: "+ area(radius));
System.out.println("Surface area: "+area(radie, height));
System.out.println("Volume: "+ volume(radius, height));
}
}