Java 计算器变量
Java Calculator Variable
package com.company;
import java.util.Scanner;
public class javaCalculator {
public static void main(String[] args) {
setNumbers(x,y);//---->>>>Problem
addNumbers(x,y);//---->>>Problem
multiplyNumbers(x,y);//---->>>Problem
}
public static double[] setNumbers(double x, double y) {
Scanner set = new Scanner(System.in);
double[] inputs = new double[2];
System.out.println("Enter First Number");
x = inputs [0] = set.nextDouble();
System.out.println("Enter Second Number");
y = inputs [1] = set.nextDouble();
return inputs;
}
public static double addNumbers(double x, double y){
double addition = x+y;
System.out.println(addition);
return addition;
}
public static double multiplyNumbers(double x, double y){
double multiply = x+y;
System.out.println(multiply);
return multiply;
}
}
问题是它说 x 和 y 没有初始化。
我不知道该怎么做,我在 setNumbers 中声明了它们并想将它们用于加法和乘法。
如果我在 main 中再次声明它们,那么 x 和 y 的值将是 0,这对我没有帮助。
谢谢。
我也是 java 的新手。有人可以解释为什么我的软件 intelliJ 也说要使用
static//--->>in all the name of the methods
请用英文,说的复杂我听不懂
再次感谢。
程序在main
方法中开始执行。 Java执行的第一条语句是
setNumbers(x,y);
那时你没有定义任何 x
或 y
变量。因此错误。
注意method(x, y)
意味着你想调用一个方法并在途中给它额外的信息,两个变量。所以你需要提供像
这样的变量
double x = 1;
double y = 2;
setNumbers(x, y);
然后将使用这些参数调用该方法。但是,您的 setNumbers
方法似乎没有以任何方式使用变量,您只是尝试覆盖它们:
x = inputs [0] = set.nextDouble();
y = inputs [1] = set.nextDouble();
这对程序没有影响,因为方法内部的 x
和 y
不再连接到世界之外的范围,Java 是 pass by value.
如果您希望该方法分配两个变量然后在以后使用它们,您应该在不带参数的情况下调用它,然后 return 值:
// In main method
double[] numbers = setNumbers();
double x = numbers[0];
double y = numbers[1];
// setNumbers method
public static double[] setNumbers() {
double[] input = new double[2];
input[0] = ...
input[1] = ...
return input;
}
接下来,您的 addNumbers
和 multipleNumbers
方法有一个 return 类型 ,为什么?你不使用它,那么你就不需要它。如果你想使用它,你不应该像
那样丢弃结果
double resultAdd = addNumbers(x, y);
double resultMult = multiplyNumbers(x, y);
System.out.println("Result of x + y = " + resultAdd);
System.out.println("Result of x * y = " + resultMult);
Can someone explain why my software intelliJ also says to use static
in all the name of the methods?
您的程序执行从 main
方法开始,一个 static
方法。那时没有创建任何对象。 static
表示某些东西 未绑定 到特定对象实例。如果您希望能够调用 non-static 方法,您首先需要创建对象实例。想象一个 class 像
public class Human() {
public void drink() { ... }
public void eat() { ... }
}
如果您希望能够调用 drink
或 eat
,您首先需要创建一些 Human
实例,例如
Human john = new Human();
Human abigail = new Human();
john.eat();
abigail.drink();
方法特定于实例。所以 john
可能仍然口渴,因为我们只在 abigail
上调用了 drink
。 static
方法不特定于实例。如果我们添加下面的方法
public class Human {
public static void getIQ() { ... }
}
它可能只能return人的平均智商,而不是john
的智商。该方法对像 john
这样的实例一无所知,即使我们还没有创建像 john
这样的实例,我们也可以调用它。这也是为什么我们应该指示调用 static
方法,例如
Human.getIQ();
而不是
john.getIQ();
不幸的是,第二个变体是可能的并且可以编译。但由于调用未执行 on john
.
在您的代码示例中,由于您没有创建 classes 的任何实例,因此您需要 static
方法来调用它们。
在 main 方法中你正在调用一些方法并传递 x 和 y,你还没有声明 x 的含义和原因。
您应该先声明变量,然后以其他方式为编译器使用它们 'x' 并且 'y' 在您声明它们的类型之前没有任何意义。
在编程中,我们声明变量并为它们分配默认值,例如
double x = 0.0;
double y = 0.0;
在您的代码中,只需如上所述分配默认值,然后扫描仪输入将随后分配给它们。
希望你明白了。
package com.company;
import java.util.Scanner;
public class javaCalculator {
public static void main(String[] args) {
setNumbers(x,y);//---->>>>Problem
addNumbers(x,y);//---->>>Problem
multiplyNumbers(x,y);//---->>>Problem
}
public static double[] setNumbers(double x, double y) {
Scanner set = new Scanner(System.in);
double[] inputs = new double[2];
System.out.println("Enter First Number");
x = inputs [0] = set.nextDouble();
System.out.println("Enter Second Number");
y = inputs [1] = set.nextDouble();
return inputs;
}
public static double addNumbers(double x, double y){
double addition = x+y;
System.out.println(addition);
return addition;
}
public static double multiplyNumbers(double x, double y){
double multiply = x+y;
System.out.println(multiply);
return multiply;
}
}
问题是它说 x 和 y 没有初始化。
我不知道该怎么做,我在 setNumbers 中声明了它们并想将它们用于加法和乘法。
如果我在 main 中再次声明它们,那么 x 和 y 的值将是 0,这对我没有帮助。
谢谢。
我也是 java 的新手。有人可以解释为什么我的软件 intelliJ 也说要使用
static//--->>in all the name of the methods
请用英文,说的复杂我听不懂
再次感谢。
程序在main
方法中开始执行。 Java执行的第一条语句是
setNumbers(x,y);
那时你没有定义任何 x
或 y
变量。因此错误。
注意method(x, y)
意味着你想调用一个方法并在途中给它额外的信息,两个变量。所以你需要提供像
double x = 1;
double y = 2;
setNumbers(x, y);
然后将使用这些参数调用该方法。但是,您的 setNumbers
方法似乎没有以任何方式使用变量,您只是尝试覆盖它们:
x = inputs [0] = set.nextDouble();
y = inputs [1] = set.nextDouble();
这对程序没有影响,因为方法内部的 x
和 y
不再连接到世界之外的范围,Java 是 pass by value.
如果您希望该方法分配两个变量然后在以后使用它们,您应该在不带参数的情况下调用它,然后 return 值:
// In main method
double[] numbers = setNumbers();
double x = numbers[0];
double y = numbers[1];
// setNumbers method
public static double[] setNumbers() {
double[] input = new double[2];
input[0] = ...
input[1] = ...
return input;
}
接下来,您的 addNumbers
和 multipleNumbers
方法有一个 return 类型 ,为什么?你不使用它,那么你就不需要它。如果你想使用它,你不应该像
double resultAdd = addNumbers(x, y);
double resultMult = multiplyNumbers(x, y);
System.out.println("Result of x + y = " + resultAdd);
System.out.println("Result of x * y = " + resultMult);
Can someone explain why my software intelliJ also says to use
static
in all the name of the methods?
您的程序执行从 main
方法开始,一个 static
方法。那时没有创建任何对象。 static
表示某些东西 未绑定 到特定对象实例。如果您希望能够调用 non-static 方法,您首先需要创建对象实例。想象一个 class 像
public class Human() {
public void drink() { ... }
public void eat() { ... }
}
如果您希望能够调用 drink
或 eat
,您首先需要创建一些 Human
实例,例如
Human john = new Human();
Human abigail = new Human();
john.eat();
abigail.drink();
方法特定于实例。所以 john
可能仍然口渴,因为我们只在 abigail
上调用了 drink
。 static
方法不特定于实例。如果我们添加下面的方法
public class Human {
public static void getIQ() { ... }
}
它可能只能return人的平均智商,而不是john
的智商。该方法对像 john
这样的实例一无所知,即使我们还没有创建像 john
这样的实例,我们也可以调用它。这也是为什么我们应该指示调用 static
方法,例如
Human.getIQ();
而不是
john.getIQ();
不幸的是,第二个变体是可能的并且可以编译。但由于调用未执行 on john
.
在您的代码示例中,由于您没有创建 classes 的任何实例,因此您需要 static
方法来调用它们。
在 main 方法中你正在调用一些方法并传递 x 和 y,你还没有声明 x 的含义和原因。
您应该先声明变量,然后以其他方式为编译器使用它们 'x' 并且 'y' 在您声明它们的类型之前没有任何意义。
在编程中,我们声明变量并为它们分配默认值,例如
double x = 0.0;
double y = 0.0;
在您的代码中,只需如上所述分配默认值,然后扫描仪输入将随后分配给它们。
希望你明白了。