Java多字符串返回

时间:2018-08-20 22:08:32

标签: java

我正在尝试解决我所修课程的练习。我需要创建一个函数,该函数创建输入数组并返回最小值和最大值。这是我的简单代码(非常基本):

static String createVect()
{
    Scanner input = new Scanner(System.in);

    System.out.print("Number of elements: ");
    int n = input.nextInt();

    int vector[] = new int[n];      

    for (int i = 0; i < n; i++)
    {
        System.out.print("Valor " + (i+1) + ": ");
        vector[i] = input.nextInt();
    }               

    int min = Arrays.stream(vector).min().getAsInt();
    int max = Arrays.stream(vector).max().getAsInt();       

    System.out.println("Min: " + min);
    System.out.println("Max: " + max);

    return Arrays.toString(vector); 

}

public static void main(String[] args)
{
    System.out.println(createVect());   
}

它工作正常,但是我想用Return替换System.out.print,但是我不确定是否应该封装它们或为min和max创建其他函数。感谢您的帮助。

3 个答案:

答案 0 :(得分:2)

您可能对summaryStatistics()方法感兴趣。您的方法可以返回IntSummaryStatistics的实例以携带最小值和最大值(以及其他信息)。至少,您可以使用该方法来避免对数组进行多次遍历:

IntSummaryStatistics stats = IntStream.of(vector).summaryStatistics();
System.out.printf("Min: %d%n", stats.getMinimum());
System.out.printf("Max: %d%n", stats.getMaximum());

对于私有实现,以这种方式使用数组既快捷又容易。但是对于公共API而言,它给客户带来不便和容易出错,并且可能导致维护陷阱。

答案 1 :(得分:1)

利用数组在单个数据结构中返回多个值:

static int[] createVect()
{
    Scanner input = new Scanner(System.in);

    System.out.print("Number of elements: ");
    int n = input.nextInt();

    int vector[] = new int[n];      

    for (int i = 0; i < n; i++)
    {
        System.out.print("Valor " + (i+1) + ": ");
        vector[i] = input.nextInt();
    }               

    int min = Arrays.stream(vector).min().getAsInt();
    int max = Arrays.stream(vector).max().getAsInt();       

    int[] returnArray; // declare returnArray as an array of integers
    returnArray = new int[2]; // create an array of 2 integers in returnArray
    returnArray[0] = min; // set the first element of returnArray to your min value
    returnArray[1] = max; // set the second element of returnArray to your max value

    return(returnArray); // return returnArray to the calling function
}

进一步阅读:Returning an array as return value in a method - Emory MathCS

答案 2 :(得分:0)

您不能同时返回不同类型的数据,可以使用更多数据 通过将向量数组创建为实例变量来简化操作的方法。

static func getUsers() -> [String] {
    let group = DispatchGroup()
    group.join()
    var userNames = [String]()
    db.collection("users").getDocuments() { (querySnapshot, err) in
        defer { group.leave() }
        if let err = err {
            print("Error getting documents: \(err)")
        } else {
            for document in querySnapshot!.documents {
                let data = document.data()
                let first : String = data["First"] as! String
                let last : String = data["Last"] as! String
                userNames.append("\(first) \(last)")
            }
        }
    }
    group.wait()
    return userNames
}