Java方法有帮助

时间:2011-08-19 06:18:53

标签: java methods

我应该制作一个只有2种方法的程序。一种方法从用户获得输入。另一种方法确定三角形是Scalene Isosceles还是Equilateral。然后我必须将结果作为字符串返回到原始方法(这是我遇到问题的部分)。我没有老师,我只是从小册子里做东西。任何帮助将不胜感激。

       import java.util.Scanner;
       public class Triangle {

public static void main (String args[]){
    // Input for lengths
    Scanner one = new Scanner(System.in);
    double sideone;
    System.out.println("Enter side one:");
    sideone = one.nextDouble();

    Scanner two = new Scanner(System.in);
    double sidetwo;
    System.out.println("Enter side two:");
    sidetwo = two.nextDouble();

    Scanner three = new Scanner(System.in);
    double sidethree;
    System.out.println("Enter side three:");
    sidethree = three.nextDouble();
    sides(sideone, sidetwo, sidethree);
}


static void sides(double sideone, double sidetwo, double sidethree){

    if ((sideone == sidetwo) && (sideone == sidethree)){
        System.out.println("The triangle is Equilateral");
    }

    if (((sideone == sidetwo) || (sideone == sidethree) || (sidetwo == sidethree)))
    {
    System.out.println("The triangle is Isosceles");
    }

    else{ 
    System.out.println("The triangle is Scalene");  
    }

    return; 
}

}

3 个答案:

答案 0 :(得分:5)

目前,您的方法被声明为返回void - 即根本没有值。只需将其更改为返回String

static String sides(double side1, double side2, double side3) {
    if (side1 == side2 && side1 == side3){
        return "The triangle is Equilateral";
    }
    // etc
}

有关详细信息,请在您正在学习Java的书中查找有关“返回”的部分。

请注意,在几乎所有情况下,比较double值以确保完全相等是一个坏主意。在这种特殊情况下可能没问题,因为你只是从字符串中转换它们 - 但是如果你对它们进行算术运算,那么在一定容差范围内比较它们通常会更好。< / p>

另请注意,在代码的早期部分,无需声明double变量,然后向用户写入消息。如果你可以结合声明和赋值,它通常会使代码更清晰。同样地,不需要创建三个不同的Scanner对象,每个对象都从标准输入读取:

Scanner input = new Scanner(System.in);

System.out.println("Enter side one:");
double side1 = input.nextDouble();

System.out.println("Enter side two:");
double side2 = input.nextDouble();

System.out.println("Enter side three:");
double side3 = input.nextDouble();

(这里的公共代码可以进一步重构,但这是一个开始...)

答案 1 :(得分:2)

  

然后我必须将结果作为字符串返回到原始方法(这是我遇到问题的部分)。

您需要将方法的返回类型从void(nothing)更改为String,然后使用“return”返回结果:

static String sides(double sideone, double sidetwo, double sidethree){

    if ((sideone == sidetwo) && (sideone == sidethree)){
         return "The triangle is Equilateral";
    }

然后,您可以从main方法调用它以获得结果:

String theResult = sides(sideone, sidetwo, sidethree);

答案 2 :(得分:0)

  1. 您可以通过将方法的返回类型从void更改为String来返回要打印的String。
  2. 此外,您可以通过仅创建一个扫描仪对象来读取所有输入来改进程序,而不是为每个输入创建一个,如:
  3. 双重的; 双面的; 双边三角;

    Scanner one = new Scanner(System.in);
    
    System.out.println("Enter side one:");
    sideone = one.nextDouble();
    
    
    System.out.println("Enter side two:");
    sidetwo = one.nextDouble();
    
    
    System.out.println("Enter side three:");
    sidethree = one.nextDouble();