A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

比如我想建立一个方法
  1. public .... LookFor(int x, int y)
  2. {
  3.         x++;y--;
  4.         return x,y;
  5. }
  6. 可以这么做么?或者不可以提个思路也行
复制代码

评分

参与人数 1技术分 +1 收起 理由
何伟超 + 1

查看全部评分

18 个回复

倒序浏览
返回一个数组的地址不就行了
回复 使用道具 举报
个人感觉不行:如果要返回多个值,要么用数组,方法调用完后原数组元素发生值改变 或者 如果这对值有对应关系,可用后期的键值对集合map。因为返回多个值,如何定义接收多个返回值  最多:int value = lookFor(x,y)。

评分

参与人数 1技术分 +1 收起 理由
何伟超 + 1

查看全部评分

回复 使用道具 举报
廉伟杰 发表于 2014-2-22 11:05
返回一个数组的地址不就行了

怎么写返回数组的值?
public int[][] A(int[][] a[x][y])
{
      return  a[x][y];
}
你是这个意思么?
不能编译的
回复 使用道具 举报
小Zeor……… 发表于 2014-2-22 11:38
怎么写返回数组的值?
public int[][] A(int[][] a[x][y])
{

亲,是返回数组的地址啊,并不是a【】【】
回复 使用道具 举报
可以返回一个数组   或者一个对象。  里面都保存着 x, y

评分

参与人数 1技术分 +1 收起 理由
滔哥 + 1

查看全部评分

回复 使用道具 举报
哥呀,这样不就行了:
public static void main(String[] args){
    int x = 2, y = 5;
    int[] ints = {x,y};
    System.out.println(Arrays.toString(ints));
    ints = getxy(ints);
    System.out.println(Arrays.toString(ints));
}
public int[] getxy(int[] ints){
    int[0]++;
    int[1]--;
    return ints;
}

评分

参与人数 1技术分 +1 收起 理由
滔哥 + 1

查看全部评分

回复 使用道具 举报
返回一个数组啊,或者字符串连接起来 然后接到后截取也行的。
  public String[] add(String name, String n){
     String[] arr = new String[2];
     arr[0] = name;
     arr[1] = n;
     return arr;
  }

评分

参与人数 1技术分 +1 收起 理由
滔哥 + 1

查看全部评分

回复 使用道具 举报
别用数组 数组固定长度了,也别用Map ,Map还得根据键取值。如果不区分的话 你可以直接用数组列表 ArrayList 这个比较适合的。

评分

参与人数 1技术分 +1 收起 理由
滔哥 + 1

查看全部评分

回复 使用道具 举报
本帖最后由 wdtdcm 于 2014-2-22 20:43 编辑

跟我上次的问题差不多,可以开个数组存数据,思路如下图


可以这样实现
  1. class t1{
  2.         public static void main(String[] args){
  3.                 int[] arr=new int[2];
  4.                 int x=1;
  5.                 int y=2;
  6.                
  7.                 Fangfa.change(arr,x,y);
  8.                 x=arr[0];
  9.                 y=arr[1];
  10.                 System.out.println(x+ " "+y);
  11.         }

  12. }
  13. class Fangfa{
  14.         static void change(int[] arr,int x, int y){
  15.                 arr[0]=++x;
  16.                 arr[1]=--y;
  17.         }
复制代码



评分

参与人数 1技术分 +1 收起 理由
zzkang0206 + 1

查看全部评分

回复 使用道具 举报
可以用另外一种容器来储存StringBuffer
  1. class Demo {
  2.         public static void main(String[] args) {       
  3.                 haha(10,8);
  4.         }
  5.         public static void haha(int x,int y) {
  6.                 StringBuffer sb = new StringBuffer();
  7.                 sb.append(x);
  8.                 sb.append(y);
  9.                 System.out.println(sb);
  10.         }
  11. }
复制代码

评分

参与人数 1技术分 +1 收起 理由
zzkang0206 + 1

查看全部评分

回复 使用道具 举报
楼主想用一个方法返回多个值,对值的类型有要求吗?
#1:同类型,可用数组,见楼上答复;
另外也可以用Hashtable,见代码如下:
  1. import java.util.*;

  2. /*
  3. * 利用Hashtable,实现一个函数返回多个值
  4. * [b]建议修改本程序HashMap,避免安全警告![/b]
  5. * Created by Ian Feyman
  6. * */
  7. public class Test
  8. {

  9.    public static Hashtable Lookfor(String[] key,int x,int y,int z)
  10.    {
  11.            Hashtable<String,Integer> retValue = new
  12.                                        Hashtable<String,Integer>();
  13.         
  14.         //进行操作
  15.         retValue.put(key[1],x);
  16.         retValue.put(key[2],y);
  17.         retValue.put(key[3],z);

  18.            return retValue;

  19.    }
  20.    public static void ShowResult(Hashtable htable)
  21.    {
  22.        System.out.println("Value1: "+htable.get("one")+
  23.                          "\nValue2: "+ htable.get("two")+
  24.                          "\nValue3: "+htable.get("three"));
  25.    }
  26.    public static void main(String[] args)
  27.    {
  28.         Hashtable<String,Integer> multiValue = new  
  29.                                      Hashtable<String,Integer>();

  30.         String[] str = new String[6];
  31.         str[1] = "one";
  32.         str[2] = "two";
  33.         str[3] = "three";

  34.         multiValue =  Lookfor(str,100,200,300);
  35.         ShowResult(multiValue);
  36.    }
  37. }
复制代码

评分

参与人数 1技术分 +1 收起 理由
zzkang0206 + 1

查看全部评分

回复 使用道具 举报
看了这么多,用个字符串表示不就可以了吧,中间用一个逗号隔开,取出来再截取!
回复 使用道具 举报
#2-1:不同类型,可以返回类,通过类封装不同的属性值见代码如下:
  1. import java.lang.String;

  2. class Result
  3. {
  4.    private char value1;
  5.    private int  value2;
  6.    private float value3;
  7.    private String value4;

  8.    public char getValue1()
  9.    {
  10.      return value1;
  11.    }
  12.    public void setValue1(char value)
  13.    {
  14.      value2 = value;
  15.    }
  16.    
  17.    public int getValue2()
  18.    {
  19.      return value2;
  20.    }
  21.    public void setValue2(int value)
  22.    {
复制代码
//或者结构体、union体等也可

评分

参与人数 1技术分 +1 收起 理由
zzkang0206 + 1

查看全部评分

回复 使用道具 举报
以上代码均可正确运行,
#2-2:不同类型,利用ref和out型参数,间接返回(略)
回复 使用道具 举报
数组、Map、ArrayList都可以的!根据自己的习惯而定看你想用哪个方法了。
回复 使用道具 举报
严旭晟 发表于 2014-2-22 23:15
以上代码均可正确运行,
#2-2:不同类型,利用ref和out型参数,间接返回(略) ...

这里有问题,把java和C#搞混了
若是C#的话,采用ref和out型参数很方便,间接返回
在java中,基本类型作为参数都传值
还可利用全局变量,思路就这么多了
回复 使用道具 举报
我也是想到的数组
回复 使用道具 举报
将两个值封装在对象里面
public class A {
        Object x;
        Object y;
        public Object getX(){
                return x;
        }
        public Object getY(){
                return y;
        }
}
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马