我一直试图弄清楚如何根据从Scanner
类获得的输入来计算面积和体积。练习包括一次接收多对半径和高度。
我已经编写了方法并对它们进行了测试,因此这些方法应该正常工作。我遇到的问题是当我想使用“扫描仪”中的输入并使用它们进行计算时。
这是我的代码(我没有包含方法):
Scanner keyboard = new Scanner(System.in);
int radius = 0;
int height = 0;
System.out.print("Enter values ");
String input = keyboard.nextLine();
String[] items = input.split(" ");
int[] numbers = new int[items.length];
for (int i = 0; i < items.length; i++)
{
numbers[i] = Integer.parseInt(items[i]);
}
for (int i = 0; i < numbers.length/2; i++)
{
numbers[i] = radius;
numbers[i + 1] = height;
double result = area(radius);
double result1 = area (radius,height);
double result2 = volume (radius,height);
System.out.println("");
System.out.print("r = " + radius + " ");
System.out.print("h = " + height);
System.out.println("");
System.out.print("Base area: ");
System.out.printf("%.2f", result);
System.out.println("");
System.out.print("Surface area: ");
System.out.printf("%.2f", result1);
System.out.println("");
System.out.print("Volym: ");
System.out.printf("%.2f", result2);
System.out.println("");
}
keyboard.nextLine();
结果如下:
Input: 2 4 5 1
Output:
r = 0 h = 0
Base area: 0.00
Surface area: 0.00
Volym: 0.00
r = 0 h = 0
Base area: 0.00
Surface area: 0.00
Volym: 0.00
答案 0 :(得分:1)
这两行是错误的:
numbers[i] = radius;
numbers[i + 1] = height;
radius
和height
应位于左侧:
radius = numbers[i];
height = numbers[i + 1];
另外,如果你想&#34; group&#34;成对的输入,这不会起作用:
radius = numbers[i];
height = numbers[i + 1];
这只会将输入分组为&#34;(0,1),(1,2)和#34;。改为使用它;
radius = numbers[i * 2];
height = numbers[i * 2 + 1];
答案 1 :(得分:1)
你必须这样做:
for (int i = 0; i < numbers.length; i+=2)
{
radius = numbers[i];
height = numbers[i + 1];
.
.
.
}
答案 2 :(得分:1)
import java.util.Scanner;
public class Test {
public static void main(String[] args) {
Scanner keyboard = new Scanner(System.in);
int radius = 0;
int height = 0;
System.out.print("Enter values ");
String input = keyboard.nextLine();
String[] items = input.split(" ");
int[] numbers;
if(items.length % 2 == 0){ //Making sure you are having even number of inputs
numbers = new int[items.length];
for (int i = 0; i < items.length; i++) {
numbers[i] = Integer.parseInt(items[i]);
}
for(int i = 0,j = -1; i < numbers.length / 2; i++){
radius = numbers[++j];
height = numbers[++j];
System.out.println("radius: " + radius + " height: " + height);
//Write Your Area Volume Code Here and use the radius and height which is there in the loop for calculation
//Your code goes here
//Your code ends here
}
}else{
System.out.println("Incorrect input provided");
}
keyboard.close();
}}
试试这件作品。样本输出如下:
输入值1 2 3 4 5 6 7 8 9 10 半径:1高度:2 半径:3高度:4 半径:5高度:6 半径:7高度:8 半径:9高度:10
由于
答案 3 :(得分:0)
注意:半径和高度在首次初始化后不会获得新值
答案 4 :(得分:0)
尝试一下:
public class NewMain
{
class Crate
{
public int radius;
public int height;
}
public static void main(String[] args)
{
Scanner keyboard = new Scanner(System.in);
System.out.print("Enter values ");
String input = keyboard.nextLine();
String[] items = input.split(" ");
Crate[] numbers = new Crate[items.length];
for (int i = 0; i < items.length; i ++)
{
numbers[i].radius = Integer.parseInt(items[i * 2]);
numbers[i].height = Integer.parseInt(items[i * 2 + 1]);
}
}
}
答案 5 :(得分:0)
我想你可以尝试这个解决方案。
方法import qualified Data.ByteString.Char8 as C8
main = do
scores <- fmap (map (fst . fromJust . C8.readInt) . C8.words) C8.getLine :: IO [Int]
清除数字之间的所有processItems()
,这行代码white-spaces
确保我们有偶数个输入。所以我们总是有一对数字( Radius 和 Height )。
我还创建了一个类if (integers.length % 2 == 0)
和一个InputPair
数组来打印这些对,并保持模块化。
你可以测试偶数个输入:
2 9 4 7 5 6 7 1 3 8 12 5 8 2 3 9 2 9 2 7
这是奇数个输入:
2 9 4 5 6 7 1 3 8 12 5 8 6 3 9 2 9 2 7
您可以在此处找到full Java code
InputPair