簡體   English   中英

從 Java 中的方法返回值

[英]Returning value from method in Java

我應該制作一個只有兩種方法的程序。 一種方法是從用戶那里獲取輸入。 另一種方法確定三角形是不等邊三角形、等腰三角形還是等邊三角形。 然后我必須將結果作為字符串返回給原始方法(這是我遇到問題的部分)。 我沒有老師,我只是在做小冊子上的東西。 任何幫助,將不勝感激。

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; 
        }
  
}

目前您的方法被聲明為返回void - 即根本沒有價值。 只需將其更改為返回String

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

有關更多信息,請在您學習 Java 的書中查找有關“返回”的部分。

請注意,幾乎在所有情況下,比較double值是否完全相等都是一個壞主意。 在這種特殊情況下可能沒問題,因為您剛剛從字符串轉換了它們 - 但是如果您對它們進行了算術運算,通常最好在一定的容差內比較它們的相等性。

另請注意,在代碼的早期部分,無需聲明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();

(這里的公共代碼可以進一步重構,但這是一個開始......)

然后我必須將結果作為字符串返回給原始方法(這是我遇到問題的部分)。

您需要將方法的返回類型從void(無)更改為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);
  1. 您可以通過將方法的返回類型從 void 更改為 String 來返回您正在打印的字符串。
  2. 您還可以通過僅創建一個用於讀取所有輸入的掃描儀對象來改進程序,而不是為每個輸入創建一個,例如:

雙面人; 雙面; 雙面三;

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();

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM