【问题标题】:Dividing numbers between two different arrays in JavaJava中两个不同数组之间的除数
【发布时间】:2020-07-16 18:22:48
【问题描述】:

这是我的第一篇文章。预先感谢您对此主题的理解和帮助。我试图在两个不同的数组之间划分两个数字。我的数据是从 .txt 文件中提取的。我得到了名字、加仑和英里。我正在尝试计算 MPG。所以我必须将加仑[0]除以英里[0],加仑[1]除以英里[1]等......并将其显示在cmd窗口的列表中。下面是我到目前为止的代码。请注意,底部的伪输出方法是我在尝试上面的方法之前尝试的方法。如果在之前的帖子中已经解决/回答了这个问题,我提前道歉。

import java.util.Scanner;
import java.io.*;
public class mpgHOmework2{
    public static void main(String[]args) throws IOException{

    File fn = new File("mpg.txt");
    Scanner inputFile = new Scanner(fn);

    Scanner keyboard = new Scanner(System.in);

    String[] names = new String[10];
    int[] miles = new int[10];
    int[] gallons = new int[10];
    double mpg;

    fillArray(inputFile,names,miles,gallons);

    displayArray(names,miles,gallons,mpg(miles,gallons));

    }//end main method
//==================================================================
    public static void fillArray(Scanner input,String[] arrIn, int[] arr1In, int[] arr2In){

        for(int indx = 0; indx < arrIn.length; indx++){
            arrIn[indx] = input.nextLine();
            if(arrIn[indx].length() == 0)arrIn[indx] = input.nextLine();
            arr1In[indx] = input.nextInt();
            arr2In[indx] = input.nextInt();}


    }//end fillArray method
//==================================================================
    public static void displayArray(String[] arrIn,int[] arr1In, int[]arr2In, double mpg){

        System.out.printf("%-18s   %5s    %7s   %3s\n","Names","Miles","Gallons","MPG");
        System.out.printf("%-18s   %5s    %7s   %3s\n","==================","=====","=======","===");
        for(int indx = 0; indx < arrIn.length; indx++)
            System.out.printf("%-18s   %5d   %7d  %.2f\n",arrIn[indx],arr1In[indx],arr2In[indx],mpg);

    }//end displayArray method
//==================================================================
    public static double mpg(Scanner input,String[] arrIn, int[] arr1In, int[] arr2In){

        for(int indx = 0; indx < arrIn.length; indx++){
            arrIn[indx] = input.nextLine();
            if(arrIn[indx].length() == 0)arrIn[indx] = input.nextLine();
            arr1In[indx] = input.nextInt();
            arr2In[indx] = input.nextInt();
        return = arr1In[indx]/arr2In[indx];}
}enter code here
/*  public static double mpg(int[] arrOneIn, int[] arrTwoIn){

        double retValue = 0.0;
            int a = 0;
            int b = 0;
            for (int i = 0; i < arrOneIn.length-1; i++){
                return [i] = arrOneIn[i] / arrTwoIn[i];
                }

            return a/b;
    }//end mpg method*/
}//end class

这是 mpg.txt 文件。抱歉,我 10 分钟前才注册,还不知道如何浏览网站。

John Murphy
1200  60
Katherine Cleary
1500 63
Isaac Fajerman
2600 87
Marsha Smiith
3500 100
Jason Meier
4100 196
Inna Johnson
750 34
Walter Philips
6900 265
Tracey Cannon
5024 187
Sheryl Rothman
6800 323
Jeff Gottlieb
450 18

感谢您的宝贵时间。

-罗伯

【问题讨论】:

  • 使用数组时是否需要读取数据?换句话说,为什么不直接按照您在值中读取的值进行计算?欢迎来到 Stack Overflow!
  • 是的。我目前正在学习 Java 课程,教授正在学习数组。如何进行计算以读取值?我和一个同学这几天一直在想办法。谢谢!
  • 您还应该编辑您的问题并准确解释您遇到的问题。从你的问题看不清楚。
  • 您的循环和返回语句不正确
  • 您在代码中使用很多函数做了很多不必要的事情。为什么不读取第一个输入,进行除法然后打印结果。这可以循环完成。

标签: java arrays list methods division


【解决方案1】:

这是您的主要问题。您的 mpg 方法应该如下所示。你需要全部退回 数组中的平均值,因此返回值需要是一个数组。

并且您需要将int[] 数组之一转换为加倍,这样您就不会在除法过程中丢弃分数。


    public static double[] mpg(int[] arrOneIn, int[] arrTwoIn) {

        double[] retValues = new double[arrOneIn.length];
        for (int i = 0; i < arrOneIn.length; i++) {
            retValues[i] = (double) arrOneIn[i] / arrTwoIn[i];
        }
        return retValues;
    }

【讨论】:

    猜你喜欢
    • 2017-10-08
    • 1970-01-01
    • 2020-04-04
    • 1970-01-01
    • 1970-01-01
    • 2019-07-15
    • 2021-01-28
    • 1970-01-01
    • 2012-01-18
    相关资源
    最近更新 更多