首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >Java多字符串返回

Java多字符串返回
EN

Stack Overflow用户
提问于 2018-08-21 06:08:32
回答 3查看 73关注 0票数 0

我正在试着为我正在选修的课程解决一个习题。我需要创建一个函数来创建输入数组,并返回最小和最大值。下面是我的简单代码(非常基础):

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

它的工作“还行”,但我想用返回值替换System.out.print,但我不确定是否应该封装它们或为最小和最大值创建其他函数。谢谢你的帮助。

EN

回答 3

Stack Overflow用户

发布于 2018-08-21 07:31:13

您可能会对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来说,它对客户端来说是不方便的,而且容易出错,并且可能会引入维护陷阱。

票数 2
EN

Stack Overflow用户

发布于 2018-08-21 06:15:08

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

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

票数 1
EN

Stack Overflow用户

发布于 2018-08-21 07:03:58

你不能在同一时间返回不同类型的数据,你可以简单地使用更多的方法,这将使它更容易,并通过创建向量数组作为实例变量。

private static int vector[]; 
public static int getMax(int [] nums){
    return Arrays.stream(nums).max().getAsInt();
}
public static int getMin(int [] nums){
    return Arrays.stream(nums).min().getAsInt();
}

public static String createVect(){
    Scanner input = new Scanner(System.in);
    System.out.print("Number of elements: ");
    int n = input.nextInt();
    vector = new int[n];
    for (int i = 0; i < n; i++) {        
        System.out.print("Valor " + (i+1) + ": ");
        vector[i] = input.nextInt();
    }               
    return Arrays.toString(vector); 
}

public static void main(String[] args) {   
    System.out.println(createVect());  
    System.out.println("The min value: " + getMin(vector)); 
    System.out.println("The max value: " + getMax(vector));
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51939114

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档