[英]finding average of numbers by passing elements of an array through console
Actually I'm new to this group and also new to Java and I wanna know about how to pass array parameters through console and I ended up programming like this : 实际上,我是该小组的新手,也是Java的新手,我想知道如何通过控制台传递数组参数,而我最终像这样进行编程:
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
class Average
{
public static void main(String []args)
{
int numbers[];
try
{
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
numbers =Integer.parseInt( br.readLine());
}
catch(NumberFormatException ne)
{
System.out.println("Invalid input: " + ne);
System.exit(0);
}
catch(IOException ioe)
{
System.out.println("I/O Error: " + ioe);
System.exit(0);
}
System.out.println(methodAverage());
}
public static int methodAverage(int...numbers)
{
int sum=0;
int avg=0;
for(int x:numbers)
{
sum+=x;
avg=sum/numbers.length;
return avg;
}
}
}
and the error is 错误是
Average.java:13: error: incompatible types
numbers =Integer.parseInt( br.readLine());
^
required: int[]
found: int
1 error
I know that would come but I just tried 我知道那会来,但我只是尝试
So I just wanna know about how to pass those numbers through console? 所以我只想知道如何通过控制台传递这些数字?
int numbers[];
int数字[];
As array is an object, you need to allocate it on heap using new
as int numbers[] = new int[size];
由于数组是一个对象,因此需要使用
new
作为int numbers[] = new int[size];
在堆上分配它int numbers[] = new int[size];
. 。
Average.java:13: error: incompatible types
Average.java:13:错误:类型不兼容
numbers =Integer.parseInt( br.readLine());数字= Integer.parseInt(br.readLine());
--> Integer.parseInt() returns integer and not an array, instead you can use : -> Integer.parseInt()返回整数而不是数组,可以使用:
for(int index=0; index<size; index++) {
numbers[index] =Integer.parseInt( br.readLine()); // add exception handling code as above
}
You are using BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
您正在使用
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
to read values from console instead I recommend you to use Scanner class. 而是从控制台读取值,我建议您使用Scanner类。 Have a look on java.util.Scanner .
看看java.util.Scanner 。
如果您使用它来运行该应用程序,则可以通过这种方式在命令行或终端中传递值数组
java SomeJavaFile.java 1,2,3,4,5
numbers = Integer.parseInt(br.readLine());
parserInt()
returns a single integer, and numbers
is an array. parserInt()
返回一个整数, numbers
是一个数组。 You need a loop. 您需要一个循环。
As to your average()
method, you might want to consider using floating-point maths. 至于您的
average()
方法,您可能要考虑使用浮点数学。 Otherwise, the average of 1 1 1 1 1 1 0
will come out as zero. 否则,
1 1 1 1 1 1 0
的平均值将为零。
use ArrayList<Integer> numbers = new ArrayList<Integer>
instead of int[] numbers
; 使用
ArrayList<Integer> numbers = new ArrayList<Integer>
代替int[] numbers
; and change numbers =Integer.parseInt( br.readLine());
并更改
numbers =Integer.parseInt( br.readLine());
to numbers.add(Integer.parseInt( br.readLine()));
到
numbers.add(Integer.parseInt( br.readLine()));
this aloows you nto read single integre each input line. 这使您无法在每个输入行中读取单个整数。
If you have a single line with more than one integer as input: 如果您有一行输入多个整数:
String[] nums = br.readLine().split(" ");
int[] numbers = new int[nums.length];
for(int i = 0; i < nums.length; i++) {
numbers[i] = Integer.parseInt(nums[i]);
}
Please find the modified program to get the average.
I have used space as a separator when user enters the inputs.
package Test;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
class Average
{
public static void main(String []args)
{
// int numbers;
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
String ip = null;
try {
ip = br.readLine();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
String[] items=ip.split(" ");
int[] results = new int[items.length];
try
{
for (int i = 0; i < items.length; i++) {
try {
results[i] = Integer.parseInt(items[i]);
} catch (NumberFormatException nfe) {};
}
}
catch(NumberFormatException ne)
{
System.out.println("Invalid input: " + ne);
System.exit(0);
}
System.out.println(methodAverage(results));
}
public static int methodAverage(int...numbers)
{
int sum=0;
int avg=0;
for(int x:numbers)
{
sum+=x;
avg=sum/numbers.length;
}
return avg;
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.