Java传递变量,避免使用toString哈希

问题描述 投票:0回答:2

我知道以前曾经问过,但不是我理解的方式,因为我很愚蠢。

所以。

我需要将一些变量放入一个类中,将它们与某些东西进行比较,然后返回两者中的较高者。从长远来看,我需要与正在运行的总数进行比较,但对于我的问题,我认为问题更为根本。我不明白如何将变量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,但就是这样。返回到位后,它不执行返回上方的打印行,并首先打印原始数字合并(如果您使用它不应该,例如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个数字的系列,然后最后打印最大值。

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

从根本上说,我想将两个(这个例子只是一个)变量发送给一个类,比较它们,更改其中一个,然后将它返回给主类。在这个例子中,我只是尝试发送一个变量,比较它,并将其发回。

java class variables integer
2个回答
0
投票

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

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

您在类之间抛出伪全局变量的方式可能就是问题所在。将它们传递给上面的调用,而不是隐式。


0
投票

尝试做这样的事情:

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();
  }
}
© www.soinside.com 2019 - 2024. All rights reserved.