Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何使for循环从方法输出正确的数组值_Java_Arrays_For Loop_Methods - Fatal编程技术网

Java 如何使for循环从方法输出正确的数组值

Java 如何使for循环从方法输出正确的数组值,java,arrays,for-loop,methods,Java,Arrays,For Loop,Methods,我正在开发一个程序,该程序使用给定的ID号获取员工的工资率和工时,将其存储在数组中,并使用一种方法确定员工的总工资,该工资也将存储在数组中。我的程序可以接受员工的工资率和工时,但当它输出员工ID和相应的总工资时,它会返回一组奇数字符,例如[D@1909752.如何让程序正确地输出给定员工的总工资?我认为问题出现在方法和将方法传递到最终for循环之间,以及我的方法将int乘以double这一事实之间,但我不知道从这里做什么。感谢您的帮助。我的代码如下 import java.util.Scanne

我正在开发一个程序,该程序使用给定的ID号获取员工的工资率和工时,将其存储在数组中,并使用一种方法确定员工的总工资,该工资也将存储在数组中。我的程序可以接受员工的工资率和工时,但当它输出员工ID和相应的总工资时,它会返回一组奇数字符,例如[D@1909752.如何让程序正确地输出给定员工的总工资?我认为问题出现在方法和将方法传递到最终for循环之间,以及我的方法将int乘以double这一事实之间,但我不知道从这里做什么。感谢您的帮助。我的代码如下

import java.util.Scanner;

class Payroll
{
   public static void main(String[] args)
   {
      int[] employeeId = {5658845, 4520125, 7895122, 8777541, 8451277, 1302850, 7580489};

      int[] hours = new int[7];

      double[] payRate = new double[7];

      for(int counter = 0; counter< 7; counter++)
      {
         Scanner keyboard = new Scanner(System.in);
         System.out.println("Enter the hours worked by employee #" + employeeId[counter]);
         hours[counter] = keyboard.nextInt();

            if (hours[counter] < 0)
            {
               System.out.println("Error: hours cannot be negative. The program will now close.");
               System.exit(0);
            }  
            else
            {
               continue;
            }
      } 

      for(int counter1 = 0; counter1< 7; counter1++)
      {
         Scanner keyboard = new Scanner(System.in);
         System.out.println("Enter the payrate of employee #" + employeeId[counter1]);
         payRate[counter1] = keyboard.nextDouble();

            if (payRate[counter1] < 6.0)
            {
               System.out.println("Error: payrate must be above 6.0. The program will now close.");
               System.exit(0);
            }  
            else
            {
               continue;
            }
      } 

      for (int counter2 = 0; counter2 < 7; counter2++)
      {
         System.out.println("The gross pay for employee #" + employeeId[counter2] + " is " + wages(employeeId, hours, payRate));
      }
   } 

   public static double[ ] wages(int[] employeeId, int[] hours, double[] payRate)
   {
      double[] wages = new double[7];

         for(int counter2 = 0; counter2< 7; counter2++)
         {
            wages[counter2] = hours[counter2] * payRate[counter2];
         }

      return wages;
   }

}
import java.util.Scanner;
班级工资单
{
公共静态void main(字符串[]args)
{
int[]employeeId={56588454452012578951228777541845127713028507580489};
整数[]小时=新整数[7];
double[]支付率=新的double[7];
用于(int计数器=0;计数器<7;计数器++)
{
扫描仪键盘=新扫描仪(System.in);
System.out.println(“输入员工的工作时间”+员工ID[计数器]);
小时[计数器]=键盘.nextInt();
如果(小时[计数器]<0)
{
System.out.println(“错误:小时数不能为负。程序现在将关闭。”);
系统出口(0);
}  
其他的
{
继续;
}
} 
for(int counter1=0;counter1<7;counter1++)
{
扫描仪键盘=新扫描仪(System.in);
System.out.println(“输入员工的工资率”+employeeId[counter1]);
payRate[counter1]=键盘.nextDouble();
如果(付款率[1]<6.0)
{
System.out.println(“错误:payrate必须高于6.0。程序现在将关闭”);
系统出口(0);
}  
其他的
{
继续;
}
} 
for(int counter2=0;counter2<7;counter2++)
{
System.out.println(“员工#“+employeeId[counter2]+”的总工资是“+payreeds(employeeId,hours,payRate));
}
} 
公共静态双[]工资(int[]员工ID,int[]小时,双[]工资率)
{
双倍[]工资=新的双倍[7];
for(int counter2=0;counter2<7;counter2++)
{
工资[counter2]=工时[counter2]*工资率[counter2];
}
退还工资;
}
}

字符串
[D@1909752
是应用于语句中
double
数组的
toString()的默认输出

    System.out.println("The gross pay for employee #" + employeeId[counter2] + " is " + wages(employeeId, hours, payRate));

方法
工资
返回一个
双精度
数组,您告诉程序打印整个数组,而不是一个特定的元素。如果要打印所有七个元素,您需要使用循环或lambda单独打印每个元素。

可以这样做:
工资(员工ID、工时、工资率)[counter2]
谢谢Garrison先生提供的信息,还有jgitter,这非常有效。谢谢大家!也许可以这样做:
工资(员工ID、工时、工资率)[counter2]
不,
counter2
在那一点上不可见。它是
工资
本地的。它起作用是因为我在main方法中也使用了
counter2
,以减少对我的混淆