这是一项学校作业。我真的很想了解我在做什么。我们被指示使用命令行运行Java程序。用户输入数字后,程序应该开始,发送欢迎信息,然后告诉用户他的号码的平均值是多少。
我认为这一点是为了说明如何在程序中使用args
并帮助我们熟悉Java。
这是我目前的解释。我可以从命令行运行它,我知道如何添加欢迎消息...但我不能很好地理解代码,以便能够在用户添加参数时添加平均数字的能力。
public class ArgumentExample {
public static void main(String[] args) {
if( args.length == 1 || args.length > 1 ){
System.out.println( args[0]);
}
if( args.length > 1 ) {
for( int i = 1; i < args.length; i++ ){
System.out.println(args[i]);
}
}
}
}
答案 0 :(得分:2)
public class ArgumentExample {
public static void main(String[] args) {
int i = 0; // declare a counter here so you can use it in the catch
double tot = 0.0d; // declare the accumulator variable
try {
for (i = 0; i < args.length; i++) { // iterate over arguments...if only one is present returns just that one
tot += Double.parseDouble(args[i]); // sum
}
} catch (Exception ex) {
System.out.println("Argument " + i + " is not a number");// print which argument is not a number if any
}
System.out.println("Sum is: " + tot/(args.lenght == 0 ? 1 : args.lenght); // final print statement
}
}
答案 1 :(得分:1)
现在您只需打印出放入args
数组的参数。将String
参数转换为数字(比如说,双精度数),将它们添加到循环中的运算总和,然后除以循环后的参数数量,这不是一个很大的步骤:
double sum = 0;
if (args.length >= 1) {
for (int i = 0; i < args.length; i++) {
sum += Double.parseDouble(args[i]);
}
System.out.println("Average = " + sum/args.length);
}
Double是基本类型double的包装类。它有一个方便的parseDouble
方法,你可以传递String
,它会尝试将其转换为double
类型。我们应该在这里使用双打而不是整数,因为双精度的精度更高 - 例如如果除以5/2,则得到2,而不是2.5,除非你确定5和2被视为双打。
请注意,这没有错误检查,因此如果任何参数不能解析为Double,则抛出异常会失败。
答案 2 :(得分:1)
args
是对String
数组的引用,该数组包含启动时传递给程序的所有参数。
数组使用0基系统来引用该位置的对象,因此args[0]
是传递给程序的第一个参数。
for( int i = 1; i < args.length; i++ )
循环
正在遍历数组,直到打印完每个参数后到达结束( i = length - 1 )
答案 3 :(得分:1)
学生往往会把太多的东西放进主场。
我建议你把真正的工作放在合理的方法中,有朝一日你可以使用它并传入和传出数据,如下所示:
public class StatisticsUtils {
public double average(double [] values) {
double average = 0.0;
if ((values != null) && (values.length > 0)) {
for (double value : values) {
average += value;
}
average /= values.length;
}
return average;
}
}
答案 4 :(得分:1)
要获得数字的平均值,您必须构建它们的总和,然后除以参数的数量。例如
public class ArgumentExample
{
public static void main(String[] args) {
int sum = 0;
// step through all arguments
for(String arg : args)
{
try
{
// try to convert the argument to an integer
int number = Integer.parseInt(arg);
// sum it
sum += integer;
}
catch(NumberFormatException e)
{
// the currently processed argument couldn't be converted
// to a number
System.out.println(arg + " is not a number");
}
}
// average = sum / valuecount
double average = sum / args.length;
System.out.println("average = " + average);
}
java -jar ArgumentExample 1 2 3 4 5将导致3.希望有所帮助