【问题标题】:is it possible to use (string, int) in the same method to get a return (string) and return (int)?是否可以在同一方法中使用 (string, int) 来获取返回 (string) 和返回 (int)?
【发布时间】:2013-10-16 05:00:44
【问题描述】:
           import java.util.Scanner;
           public class Return {

                  static Scanner input = new Scanner(System.in);
                  public static void main(String[] args) {
                          inputTest();

                             }
                  public static void inputTest(){
                      System.out.println("From Digit (9635)");
                      System.out.print("Enter a Digit: ");
                      int number = input.nextInt();
                      System.out.println(Digit(number));

                             }

                 public static int Digit(int number) {
                      if (number == 1) {
                        System.out.print("The 4th number in the argument is =\t"); 
                        return 5; 
                    } else if (number == 2) {     
                        System.out.print("The 3rd number in the argument is =\t");  
                        return 3;
                    } else if (number == 3) {
                            System.out.print("The 2nd number in the argument is =\t"); 
                        return 6;
                    } else if (number == 4) {
                        System.out.print("The 1st number in the argument is =\t"); 
                        return 9;
                    } else {
                        System.out.print("Sorry! That's not part of the argument =\t"); 
                            **return 0;**
                     }
                 }
           }

/* 是否可以在同一个方法中使用 (string, int) 来获得一个 返回(字符串)和返回(整数)?? 我想让那个 return 0(int) 变成 return none(String) */

【问题讨论】:

  • 一个Java方法只能有一个返回值。
  • 像这样的问题和挑战让我思考 Ruby、Perl、Lua、Python 等如何允许从函数返回项目列表。而从 Java 函数中泛化地返回对象列表可以很好地解决这个问题,但会导致处理结果的工作量更大。

标签: java string methods int return


【解决方案1】:

你有两个选择:

1) 使用具有 2 个属性的返回对象,例如 Apache Pair。见http://commons.apache.org/proper/commons-lang/apidocs/org/apache/commons/lang3/tuple/Pair.html

2) 传入一个对象(例如,StringBuilder)并让该对象存储您的一个返回值(例如,StringBuilder.append)。

【讨论】:

  • 我不确定您的第二个选项在 Java 中是否会按照您希望的方式工作。你测试过吗?
  • 你是对的,我 Java 不会通过引用传递任何东西。我把它和 C++ 搞混了。我会修改我的答案。谢谢。
【解决方案2】:

如果你愿意在返回类型上妥协,你可以返回一个你需要的值的 HashMap

【讨论】:

    【解决方案3】:

    你做不到。方法:

    public static int Digit(int number){
     ...
    }
    

    必须返回指定的整数。

    但是您可以在返回值后将其更改为字符串(即在您的 inputTest 方法中)

    public static void inputTest(){
        System.out.println("From Digit (9635)");
        System.out.print("Enter a Digit: ");
        int number = input.nextInt();
        int digit = Digit(number);
        if(digit!=0)
            System.out.println(digit);
        else
            System.out.println("none");
    }
    

    【讨论】:

      【解决方案4】:

      同一方法不能有两个返回值,但可以:

      1. 返回String.valueOf(int),或者
      2. 返回包含Stringint 的自定义对象

      【讨论】:

      • +1 表示“返回包含 int 和字符串的元组”,尽管我建议返回对象的异构列表 ;-)
      猜你喜欢
      • 1970-01-01
      • 2017-08-25
      • 2019-10-12
      • 2016-11-27
      • 2019-05-31
      • 1970-01-01
      • 2014-11-23
      • 1970-01-01
      • 2020-06-08
      相关资源
      最近更新 更多