【问题标题】:Java Passing variables, avoiding toString hashJava 传递变量,避免 toString 哈希
【发布时间】:2016-11-02 04:32:32
【问题描述】:

我知道以前有人问过这个问题,但不是我理解的方式,因为我很笨。

所以。

我需要将一些变量放入一个类中,将它们与某物进行比较,然后返回两者中较高的值。从长远来看,我需要与运行总数进行比较,但对于我的问题,我认为这个问题更为根本。我不明白如何将变量 BACK 传递给我的主类。

import java.io.*;
public class testing123 {
  public static void main(String[] args) {

    InputStreamReader input = new InputStreamReader(System.in);
    BufferedReader reader = new BufferedReader(input);   

    Integer  a;
    Integer  b;
    Integer numbersCombined;
    try {
          System.out.println("Please enter a number");
          a = Integer.parseInt(reader.readLine());

          System.out.println("Please enter a number");
          b = Integer.parseInt(reader.readLine());


          numbersCombined = (a + b);




      testClass Check = new testClass();

      System.out.println("Your numbers combined is " +numbersCombined);
      System.out.println(Check);

    } catch (IOException e){
      System.out.println("Error reading from user");
    }

  }

}

class testClass {
  public static Integer testClass (Integer numbersCombined) {


if (numbersCombined > 100) {
  numbersCombined = numbersCombined;
}
else {
  numbersCombined = 100;
}
System.out.println(numbersCombined);
return numbersCombined;
  }
}

如果我删除返回,这将打印 numbersCombined,但仅此而已。在 return 到位后,它不会执行 return 上方的打印行,而是首先打印原始 numbersCombined(如果你使用 10 和 20,它不应该这样做,因为它小于 100),然后打印testClass@76046e53 而不是实际值。我知道有一种方法可以覆盖它,但我找到的答案对我不起作用。

我知道这个答案:http://www.google.com/url?q=http%3A%2F%2Fstackoverflow.com%2Fquestions%2F29140402%2Fhow-do-i-print-my-java-object-without-getting-sometype2f92e0f4&sa=D&sntz=1&usg=AFQjCNGIzxlBSH8xIS7hurKe6_Euc7B8RQ

是我遇到的基本问题,但列出的覆盖对我来说并不真正有效,无论如何我想要整数,而不是字符串。

最后,我“真正”做的是从用户那里获取一系列 4 个数字,然后使用这个函数来比较这一系列数字是否高于之前的最大值,如果是,那就是新的最大值向前移动,循环直到用户完成输入 4 个数字的系列,然后最后打印最大值。

我能够在没有任何函数的情况下编写这个,所有函数都是内联的,像馅饼一样简单。但是一旦我将比较发送给一个函数,我不明白如何将它发送回来,我花了一整天的时间试图理解这个概念。一整天。所以,虽然我知道这将是一个愚蠢的答案,但那是因为我很愚蠢,而不是因为我没有尝试(抱歉,有点防御。沮丧)。

基本上,我想将两个(这个例子只是一个)变量发送到一个类,比较它们,更改其中一个,然后将其返回给主类。在这个例子中,我只是想发送一个变量,比较它,然后把它发回去。

【问题讨论】:

  • 您是否尝试在testClass 中调用您的方法?它确实返回一个整数,这似乎是你想要的。

标签: java class variables integer


【解决方案1】:

你需要调用TestClass中的方法。您的代码已经从该方法返回一个整数。

一旦你实例化类运行testClass.testClass(numbers)

您在类之间使用伪全局变量的方式可能是问题所在。像上面那样通过调用传递它们,而不是隐式传递。

【讨论】:

    【解决方案2】:

    尝试做这样的事情:

    import java.io.*;
    
    public class HelloWorld{
    
         public static void main(String []args){
            InputStreamReader input = new InputStreamReader(System.in);
            BufferedReader reader = new BufferedReader(input);   
    
            Integer  a;
            Integer  b;
            Integer numbersCombined;
            try {
              System.out.println("Please enter a number");
              a = Integer.parseInt(reader.readLine());
    
              System.out.println("Please enter a number");
              b = Integer.parseInt(reader.readLine());
    
              numbersCombined = (a + b);
    
              testClass Check = new testClass(numbersCombined); // constructor should be like this
    
              System.out.println("Your numbers combined is " + numbersCombined);
              System.out.println(Check);
    
            } catch (IOException e){
              System.out.println("Error reading from user");
            }
    
         }
    }
    
    class testClass {
      Integer numbersCombined;
    
      // This is a constructor
      public testClass (Integer numbersCombined) {
        if (numbersCombined > 100) {
          this.numbersCombined = numbersCombined; // use this to represent the object
        } else {
          this.numbersCombined = 100;
        }
        System.out.println(numbersCombined);
      }
    
      // Add method toString()
      public String toString() {
          return this.numbersCombined.toString();
      }
    }
    

    【讨论】:

    • 当我复制和粘贴该代码时,我得到一个错误:[line 21]Error: constructor testClass in class testClass cannot be applied to given types;必需:未找到参数:java.lang.Integer 原因:实际参数列表和形式参数列表的长度不同
    • 你应该在构造函数中传递 Integer 元素: new testClass(numbersCombined);如果你只通过“new testClass()”,那么编译器会抛出一个错误。除非你创建一个没有任何参数的新构造函数
    猜你喜欢
    • 2012-09-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-10-30
    • 1970-01-01
    • 1970-01-01
    • 2021-11-15
    相关资源
    最近更新 更多