Java计算器变量

Java计算器变量,java,variables,methods,declaration,Java,Variables,Methods,Declaration,问题是它说x和y没有初始化 我不知道怎么做,我在集合数中声明了它们,并想用它们来进行加法和乘法 如果我在main中再次声明它们,那么x和y的值将为0,这对我没有帮助 多谢各位 我也是java新手。有人能解释为什么我的软件intelliJ也说要使用吗 package com.company; import java.util.Scanner; public class javaCalculator { public static void main(String[] args) {

问题是它说x和y没有初始化

我不知道怎么做,我在集合数中声明了它们,并想用它们来进行加法和乘法

如果我在main中再次声明它们,那么x和y的值将为0,这对我没有帮助

多谢各位

我也是java新手。有人能解释为什么我的软件intelliJ也说要使用吗

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;
}

}
请用英语说,如果你把它弄得很复杂,我就听不懂了

再次感谢。

程序将在main方法中开始执行。Java执行的第一条语句是

   static//--->>in all the name of the methods
在这一点上,您没有定义任何x或y变量。这就是错误

请注意,methodx,y意味着您希望调用一个方法,并在此过程中为其提供附加信息(两个变量)。所以你需要提供这样的变量,比如

setNumbers(x,y);
然后将使用这些参数调用该方法。但是,您的setNumbers方法似乎没有以任何方式使用变量,您只是尝试覆盖它们:

double x = 1;
double y = 2;
setNumbers(x, y);
这对程序没有任何影响,因为方法中的x和y不再连接到世界之外的范围,Java是

如果希望该方法分配两个变量,然后在以后使用它们,则应在不带参数的情况下调用该方法,然后返回值:

x = inputs [0] = set.nextDouble();
y =  inputs [1] = set.nextDouble();
接下来,addNumbers和multipleNumbers方法有一个返回类型,为什么?如果你不使用它,那么你就不需要它。如果你想使用它,你不应该像这样把结果扔掉

// 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;
}
有人能解释一下为什么我的软件intelliJ也说在所有方法的名称中使用static吗

您的程序在主方法(静态方法)中开始执行。此时不会创建任何对象。静态意味着某些东西没有绑定到特定的对象实例。如果希望能够调用非静态方法,首先需要创建对象实例。想象一下这样的班级

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);
如果您想能够调用“喝”或“吃”,您首先需要创建一些人类实例,如

public class Human() {
    public void drink() { ... }
    public void eat() { ... }
}
这些方法是特定于实例的。因此,约翰可能仍然口渴,因为我们称之为只喝阿比盖尔。静态方法不是特定于实例的。如果我们添加以下方法

Human john = new Human();
Human abigail = new Human();

john.eat();
abigail.drink();
它可能只能返回人类的平均智商,而不是约翰的智商。该方法对john这样的实例一无所知,即使我们还没有创建john这样的实例,我们也可以调用它。这也是为什么我们应该指示调用一个静态方法,比如

public class Human {
    public static void getIQ() { ... }
}
而不是

Human.getIQ();
不幸的是,第二个变体是可能的,并且可以编译。但是,由于调用没有在john身上执行,所以它很混乱


在您的代码示例中,由于您没有创建任何类的实例,因此需要静态方法来调用它们。

在main方法中,您正在调用一些方法并传递x和y,您没有声明x的含义以及为什么

您应该首先声明变量,然后再以其他方式使用它们,因为编译器“x”和“y”在声明它们的类型之前没有任何意义

在编程中,我们声明变量并为其指定默认值,例如

john.getIQ();
在您的代码中,只需如上所述分配默认值,然后扫描仪输入将随后分配给它们


希望你明白。

你是什么意思?我知道如何编写代码,我做过c,但我在链接方法和内容时总是遇到问题。你刚才说的问题是它说x和y没有初始化。我不知道怎么做。解决这个问题的办法是做一些教程/学习。学习你的课文和笔记可以解决这个问题。这是Java最基本的部分,唯一的解决方案就是学习。你能告诉我学习这些东西的好地方吗?网上有很多东西都是if和else,还有其他我不需要的东西,你一次只能分配一个变量。这是不正确的。INTA=3;int b=a=4;完全有效,并将a和b都设置为4。如果x和y为0,则setNumbers方法会更改,但这些值不会传递到加法或乘法方法,并给出错误的0输出。这是我的问题。但是我想现在有人回答了我的问题。
double x = 0.0;
double y = 0.0;