java - 使用 if 语句依次执行这两个代码

标签 java arrays object if-statement

if (m>1){

        if (x1>=0 || x1<0) {
            System.out.println("Please enter the values of f(x1): \n");
            for (int i = Koef.length-2; i >=0; i--) { // gives the length of my row (m)
                for (int j =Koef[0].length-1; j>=0;j--) { //gives the length of my column (n).
                    Koef[0][j] = readInteger("Enter the values of your coeffecients: "
                                            +"f(x1), Coeffecient" +(j)+": "); // readInteger takes an input from the user
                }
                    System.out.println();
            }
        }

//我的问题就在这里
//在上面的代码完成后,我也尝试执行下面的代码,但不知何故它永远不会到达

        if(x2>=0 || x2<0) {
            System.out.println("Now enter the value of f(x2):  \n");
            for (int i = Koef.length-2; i >=0; i--) { 
                for (int j =Koef[0].length-1; j>=0;j--) { 

                    Koef[1][j] = readInteger("Enter the value of coefficients: "
                                            +"f(x2), Coefficient" +(j)+": ");
                }
            }
        }
====================================================================

//这是在测试类中发生的事情:

if (m==2) {
int n = 1+readInteger("Which polynomial degree do you want to enter for f(x1)?");
                int x1 = readInteger("please enter the value of x1:");
                polynom pol1 = new polynom (m,n,x1,0); //m-2 = array 0 & n +1 = polynomial degree of array 0

//m 是第一个数组,n 是第二个数组,x1 是第一个多项式的值 x2 是第二个多项式的值

int n = 1+readInteger("Which polynomial degree do you want to enter for f(x2)?");
                int x2 = readInteger("Please enter the value of x2:");
                polynom pol2 = new polynom (m,n,0,x2);
}

我已经尝试不使用 if 语句,但我用第一个给定的幂得到了 f(x1) 和 f(x2) 的打印,然后用第二个给定的幂再次得到了两个结果。

我想要的是:得到f(x1)的一次幂(n)和f(x2)的二次幂 每一个,只有一次。

如果你能帮我摆脱困境,我将不胜感激 感谢您的帮助:)

编辑部分代码以获得更多说明: 测试类

public class MainMenu{

    public static void main(String[] args) {
        System.out.println("Do you want to calculate one or two polynoms?");
        int m = readInteger();

            if (m==1) {
                int n = 1+readInteger("Which polynom degree for f(x1), do you want to calculate?");
                int x1 = readInteger("Please enter the value of x1: ");
                pol1.eingabe();
                pol1.ausgabe();
            }

            else if (m==2) {
                int n = 1+readInteger("Which polynom degree for f(x1), do you want to calculate?");
                int x1 = readInteger("Please enter the value of x1: ");
                polynom pol1 = new polynom (m,n,x1,0);

                n = 1+readInteger("Which polynom degree for f(x2), do you want to calculate?");
                int x2 = readInteger("Please enter the value of x2: ");
                polynom pol2 = new polynom (m,n,0,x2);
                polynom pol3 = new polynom (m,n,x1,x2); //addition

                pol1.eingabe();
                pol2.eingabe(); 
                pol1.ausgabe();
                pol2.ausgabe();
                pol3.addieren(pol1, pol2);

            }

多项式类

public class polynom {

private int n; //number of Polynomial degree
private int m; //number of polynoms
private double[][] Koef;
private double x1;
private double x2;
public polynom (int a, int b, int c, int d) {
    m =a;
    n=b; 
    Koef = new double[m][n]; // create n arrays (n =6.. that means create 6 opening for coefficients)

    x1 =c;
    x2 =d;
}
public void eingabe() {
    if (m==1) {
        for (int i = Koef.length-1; i >=0; i--) {
            for (int j =Koef[0].length-1; j>=0;j--) {
                Koef[0][j] = readInteger("Enter the coeffecient values of f(x1) ein: " +(j) +": ");
            }
        }
    }
    //=========================================
    //=========================================
    if (m>1){

        if (x1>=0 || x1<0) {
            System.out.println("Please enter the value of f(x1) : \n");
            for (int i = Koef.length-2; i >=0; i--) { 
                for (int j =Koef[0].length-1; j>=0;j--) {  
                    Koef[0][j] = readInteger("Give the value of"+"f(x1) , Coeffiecient" +(j)+": ");
                }
                    System.out.println();
            }
        }

        if(x2>=0 || x2<0) {
            System.out.println("Now, enter the values of f(x2) \n");
            for (int i = Koef.length-2; i >=0; i--) { 
                for (int j =Koef[0].length-1; j>=0;j--) {
                    Koef[1][j] = readInteger("Enter the coeffiecient values of "+"f(x2) ein, Koeffizient " +(j)+": ");
                }
            }
        }
    }
}

最佳答案

正如我在代码中看到的,您为两个系数 vector 创建了一个矩阵(二维数组) - Koef[m][n]

但是,您的 if 语句( x1>=0 || x1<0 和 x2>=0 || x2<0)没有任何意义,因此它们始终为 true,在此 if 内有两个代码块。

在 block 中,您读取 2 个多项式的系数。 您的外部 for 循环也很奇怪,因为如果 m==1 或 m==2 您的外部 for 循环将仅执行一步,并且您为一个或两个多项式设置系数。

但如果 m>2,您将多次输入多项式的系数。

例如: 米=10 您将转到 if(m>1) 部分

然后在每个 if 中(通过 x1 和 x2)

您需要在中输入系数

for (int i = Koef.length-2; i >=0; i--)

9次,因为Koef.length=10 您将在从 8 到 0 的 i 迭代中输入系数

您写道,您不会进入第二个 if (x2>=0 || x2<0)

也许你有很大的m并且第一个if等待数据不止一次? 您实际上不需要外部 for 循环,因为您在每次迭代中执行相同的操作并多次重写相同的系数

希望对你有帮助

关于java - 使用 if 语句依次执行这两个代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50605587/

相关文章:

java - 我的套接字应用程序停止工作 - 如何修复它?

arrays - typescript :数组类型取决于先前的数组元素

c++ - 为什么这个结构是用字段中已有的数据初始化的?

Javascript 遍历对象数组并返回一个对象,该对象仅包含其值已更改的键

Java:树的创建

javascript - 对象在一个参数内传递多个参数

Javafx如何从第一个 Controller 访问第二个 Controller 的控件

java - Tomcat 8.5 - 错误 403 禁止或 POST 请求参数为空

java - 如何使用 twitter API 1.1 和 java 搜索推文

arrays - 如何将可选整数数组加入字符串?