我正在写一个主要方法,要求用户以圆锥体的半径和高度的长度的形式输入,然后调用3个其他数学方法来确定圆锥体底部的面积作为它的表面积和体积。为什么这个循环不支持前两个输入?
这个想法是,你应该能够输入多组输入,并通过输入“q”表示你已完成输入。示例输入可以例如是“10 5 6 8 7 5 q”。然后程序应该计算三次,用两组半径和高度计算,然后打破循环。相反,它忽略了前两个输入,并且完美地完成了其余四个输入。它基本上计算n-1组高度和半径,其中n是提供的组数。我非常感谢这方面的帮助。
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;
}
do
{
if (scan.hasNextInt())
{
radie = scan.nextInt();
height = scan.nextInt();
}
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));
}while (scan.next() != "\n");
}
谢谢,这解决了问题!我不知道我怎么没有看到。我在下面发布了更新的代码,因为我现在又遇到了另一个问题。当我输入例如“10 5 3 4 q”时,程序应计算两组输入,然后继续。但是,它现在计算三组,最后两组相同。任何猜测为什么这可能是? –
因为你的else if(scan.next()。equals('q'))break;'语句检查'char''q',但扫描器读取它作为一个整体'string',因为你正在调用'scan .next()'输入令牌,因此不会中断while循环。用双引号括住你的'q'。检查我的答案的第一个代码片段。 –
此外,请将您的编辑发布在原始问题本身的下方,而不是将其作为答案提交。考虑在问题中移动它并删除您的答案。 –