Java:创建/使用记录数组

时间:2016-09-19 01:21:30

标签: java arrays record

  

我有一个作业要求我们创建一个程序来计算给定对角线和纵横比的屏幕尺寸(宽度和高度)。   我应该向用户询问输入(对角线和纵横比),调用子程序来计算尺寸(高度和宽度),然后显示结果。子程序需要返回宽度和高度,所以我需要创建一个'记录'将两者合二为一。请帮助!

     
      
  • 公式是:      
        
    • x = sqrt(y ^ 2 /(1 + a ^ 2))
    •   
    • h = x
    •   
    • w = ax
    •   
  •   
  • 其中:      
        
    • h =身高
    •   
    • w =宽度
    •   
    • Y =对角
    •   
    • a =宽高比
    •   
  •   

这是我到目前为止所拥有的:     包hw3;

//A. Nelson, a program to compute the dimensions (width & height)
//of a screen given the diagonal & aspect ratio

import java.util.Scanner;

class Screen
{
    public int height, width;
}

public class Hw3 {

public static void main(String[] args) {
    Scanner keyboard = new Scanner(System.in);
    Screen dimensions = new Screen();
    //Variables
    int yDiagonal, aAspect;
    //Program description
    System.out.println("This program will compute the dimensions (width and height)" +
            "\nof a screen given the diagonal and aspect ratio.");
    //Prompt 1: Diagonal
    System.out.print("\nPlease enter the following dimensions:" +
            "\n\tDiagonal (inches): ");
    yDiagonal = keyboard.nextInt();
    //Prompt 2: Aspect
    System.out.print("\tAspect Ratio: ");
    aAspect = keyboard.nextInt();
    //Compute Dimensions
    System.out.println("\nHere are the dimensions of the screen:" +
            "\nHave a nice day!");

}

public Screen computeDimensions(int yDiagonal,int aAspect)
{

    int answer;

    answer = (int) Math.sqrt( Math.pow(yDiagonal,2) / (1+Math.pow(aAspect,2)));
    Screen [] dimensions = new Screen[2];
    Screen.height = answer;
    Screen.width = aAspect*answer;

    return Screen;
}

}

2 个答案:

答案 0 :(得分:0)

您的代码中存在多个问题

首先,只是声明该方法实际上调用方法(即从不执行该方法)。因此,在主要方法结束时,您需要

dimensions = computeDimensions(yDiagonal, aAspect);

然而,还有其他严重问题。

首先,您已将aAspect声明为整数,而屏幕宽高比通常具有非整数比值,例如1920x1080或16:9,即1.7777 ...与其他相同宽高比,因此您需要接受浮点值而不是整数,或者编写代码来解析字符串,例如" 16:9"并计算比率。

然后在computeDimensions内创建一个Screen个对象数组,只需要一个。{1}}对象。这里正确的代码是

Screen result = new Screen();
result.height = answer;
result.width  = aAspect*answer;
return result;

然后在主要方法调用computeDimensions后,您必须打印dimensions中返回的值。

在您对算法的定义中也可能存在其他问题。我不打算为你写完整个作业,但这应该让你指出正确的方向。

答案 1 :(得分:0)

除了Jim的正确答案之外:

以下是有关如何使用computeDimensions方法调用main方法的示例:

public static void main(String[] args) {
    ...
    //Compute Dimensions
    Screen s = computeDimensions(yDiagonal, aAspect);
    System.out.println("\nHere are the dimensions of the screen: height=" +
            s.height + ", width=" + s.width + "\nHave a nice day!");
}

此外,您必须将关键字 static 添加到computeDimensions方法或程序不会编译,因为您是从静态上下文调用的:

public static Screen computeDimensions(int yDiagonal,int aAspect) {
    ...
}