【问题标题】:Triangle Side & Angle Classification Generator三角形边角分类生成器
【发布时间】:2015-01-13 06:58:47
【问题描述】:

我的任务包括:我必须设计一个允许用户输入三角形数量的计算器。目标如下:

-用户输入 x 个三角形

-计算机自动从我的 3 到 13 之间的数字列表中生成 3 个数字。

-计算机在屏幕上显示这些数字。

-它决定数字是否代表有效三角形的边。 (例如,5、5 和 13 不会创建三角形)。

-如果数字不代表有效三角形,则显示错误消息

-如果数字有效,程序判断,并显示

a) 三角形的侧面分类 - 等边、等腰或不等边,以及

b) 三角形的角度分类——直角、锐角或钝角

[这就是我所做的,但似乎出了点问题,因为计算机只显示“急性”或“无效”。]

公共类 triangle_creator 扩展 javax.swing.JFrame {

private static int side1 = (int) (11 * Math.random() + 3);
private static int side2 = (int) (11 * Math.random() + 3);
private static int side3 = (int) (11 * Math.random() + 3);
private static int userNum; 
private static String userInput; 

private void calculateButtonActionPerformed(java.awt.event.ActionEvent evt) {                                                
    //get number of triangles by user in amountInput field 

    userInput=amountInput.getText(); 
    side1=Integer.parseInt(userInput);
    side2=Integer.parseInt(userInput); 
    side3=Integer.parseInt(userInput); 

    //add all sides together

    int sumTriangle= side1+ side2+ side3; 

   // generate error message 

    if(side1+ side2< side3){
        outputArea.setText("Not valid");
    }  
    else{
        if (side1==side2 && side1==side3 && side2==side3 )
            outputArea.setText("Equilateral"); 
        if (sumTriangle==sumTriangle) 
            outputArea.setText("Isosceles"); 
        if (side1!=side2&& side1!=side3&& side2!=side3)
            outputArea.setText("Scalene");

    if (side1*side1+ side2*side2==side3*side3){
        outputArea.setText("Triangle is right");
    }        

    else if (side3*side3< side1*side1+ side2*side2)   
        outputArea.setText("Triangle is acute");

    else if (side3*side3> side1*side1+ side2*side2){
        outputArea.setText("Triangle is obtuse");

    }

    else 
        outputArea.setText("Error");

}

如果你们能给我至少一个关于如何完成这项工作的提示,我将不胜感激。哈哈!!! :)

【问题讨论】:

  • 你确定这段代码曾经写过“无效”吗?
  • @Henry 是的,只有“无效”和“三角形是锐角”。当我运行程序并输入三角形的数量,然后单击计算时,它只显示这两个词之一。
  • 如果您使用调试器逐步完成此操作,您会立即明白为什么没有得到预期的结果。

标签: java random integer geometry generator


【解决方案1】:

你的问题是side1side2side3都设置为相同的值,即Integer.parseInt(userInput)返回的值。

在大多数情况下,接下来会发生side1+ side2&lt; side3 为假,因此代码进入else 块。现在评估了很多条件,最终,side3*side3&lt; side1*side1+ side2*side2 将被评估,结果为真,因此显示"Triangle is acute"

但是如果在字段中输入足够大的值,则在评估 side1+ side2&lt; side3 时可能会出现整数溢出 - 也就是说,side1 + side2 可能太大而无法放入 int 字段中,因此它将溢出到一个负值。在这种情况下,此条件为真,"Not valid" 将被显示,else 块将永远不会被输入。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-09-08
    • 2012-09-28
    • 2015-03-19
    • 2018-08-22
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多