我知道以前曾经问过,但不是我理解的方式,因为我很愚蠢。
所以。
我需要将一些变量放入一个类中,将它们与某些东西进行比较,然后返回两者中的较高者。从长远来看,我需要与正在运行的总数进行比较,但对于我的问题,我认为问题更为根本。我不明白如何将变量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而不是实际值。我知道有一种方法可以覆盖它,但我发现的答案对我不起作用。
是我遇到的基本问题,但列出的覆盖对我来说并不是真的有效,我还是想要整数,而不是字符串。
最后,我“真正”做的是从用户那里获取一系列4个数字,然后使用此函数来比较这一系列的数字是否高于之前的最大值,如果是,那就是新的最大值向前移动,循环直到用户完成输入4个数字的系列,然后最后打印最大值。
我能够在没有任何函数的情况下编写它,所有内联,简单就像馅饼一样。但是,一旦我将比较发送到一个函数,我不明白如何将它发送回来,我花了一整天时间试图理解这个概念。一整天。所以,虽然我知道这将是一个愚蠢的答案,那是因为我很愚蠢,但不是因为我没有尝试(对不起,有点防守。沮丧)。
从根本上说,我想将两个(这个例子只是一个)变量发送给一个类,比较它们,更改其中一个,然后将它返回给主类。在这个例子中,我只是尝试发送一个变量,比较它,并将其发回。
您需要在TestClass中调用该方法。您的代码已经从该方法返回一个整数。
一旦你实例化类运行testClass.testClass(numbers)
您在类之间抛出伪全局变量的方式可能就是问题所在。将它们传递给上面的调用,而不是隐式。
尝试做这样的事情:
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();
}
}