Java 将字符串转换为整数

Java 将字符串转换为整数,java,math,input,Java,Math,Input,我努力实现的目标是:给定一个简单的等式,您应该为变量“x”输出正确的值。等式有两个大于0的数字和变量“x”,它们之间可以是“+”、“-”或“=”。数字、变量“x”、符号“+”、“-”、“=”都用空格分隔 问题是:当我读取数字时,它们显示为字符串而不是整数 我对编码非常陌生,并尝试过这一点,但我不明白为什么当我使用var并输入一个数字时,它会将其读取为字符串而不是整数 import java.util.*; public class Main { public static void m

我努力实现的目标是:给定一个简单的等式,您应该为变量“x”输出正确的值。等式有两个大于0的数字和变量“x”,它们之间可以是“+”、“-”或“=”。数字、变量“x”、符号“+”、“-”、“=”都用空格分隔

问题是:当我读取数字时,它们显示为字符串而不是整数

我对编码非常陌生,并尝试过这一点,但我不明白为什么当我使用var并输入一个数字时,它会将其读取为字符串而不是整数

import java.util.*;

public class Main {
    public static void main(String[] args) {

    int outpt;
    Scanner scanner = new Scanner(System.in);
    var sig1 = scanner.next();
    var sig2 = scanner.next();
    var sig3 = scanner.next();
    var sig4 = scanner.next();
    var sig5 = scanner.next();

    if(sig2 == "=")
    {
        if(sig1 == (int)sig1)
        {
            if(sig3 == (int)sig3)
            {
                if(sig4 == "-")
                {
                    outpt = sig3 - sig1;
                    System.out.println("");
                    System.out.println(outpt);
                }
                else
                {
                    outpt = sig1 - sig3;
                    System.out.println("");
                    System.out.println(outpt);
                }
            }
            else
            {
                if(sig4 == "-")
                {
                    outpt = sig5 + sig1;
                    System.out.println("");
                    System.out.println(outpt);
                }
                else
                {
                    outpt = sig1 - sig5;
                    System.out.println("");
                    System.out.println(outpt);
                }
            }
        }
        else
        {
            if(sig4 == "-")
                {
                    outpt = sig3 - sig5;
                    System.out.println("");
                    System.out.println(outpt);
                }
                else
                {
                    outpt = sig3 + sig5;
                    System.out.println("");
                    System.out.println(outpt);
                }
        }
    }
    else
    {
        if(sig5 == (int)sig5)
        {
            if(sig1 == (int)sig1)
            {
                if(sig2 == "+")
                {
                    outpt = sig5 - sig1;
                    System.out.println("");
                    System.out.println(outpt);
                }
                else
                {
                    outpt = sig1 - sig5;
                    System.out.println("");
                    System.out.println(outpt);

                }
            }
            else
            {
                if(sig2 == "+")
                {
                    outpt = sig5 - sig3;
                    System.out.println("");
                    System.out.println(outpt);
                }
                else
                {
                    outpt = sig3 + sig5;
                    System.out.println("");
                    System.out.println(outpt);

                }
            }
        }
        else
        {
            if(sig2 == "+")
            {
                outpt = sig1 + sig3;
                System.out.println("");
                System.out.println(outpt);
            }
            else
            {
                outpt = sig1 - sig3;
                System.out.println("");
                System.out.println(outpt);
            }
        }
    }

    }
}
示例输入1:

5+x=15 样本输出1:

十,

样本输入2:

x-8=10 样本输出2:

十八

样本输入3:

x=20-15 样本输出3:


5

这是最终的代码

import java.util.*;

public class Main {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);

        String a = scanner.next();
        String b = scanner.next();
        String c = scanner.next();
        String d = scanner.next();
        String e = scanner.next();

        if (b.equals("+") && a.equals("x")) {
            System.out.println(Integer.parseInt(e) - Integer.parseInt(c));
        } else if (b.equals("+") && c.equals("x")) {
            System.out.println(Integer.parseInt(e) - Integer.parseInt(a));
        } else if (b.equals("-") && a.equals("x")) {
            System.out.println(Integer.parseInt(e) + Integer.parseInt(c));
        } else if (b.equals("-") && c.equals("x")) {
            System.out.println(Integer.parseInt(a) - Integer.parseInt(e));
        } else if (d.equals("+") && c.equals("x")) {
            System.out.println(Integer.parseInt(a) - Integer.parseInt(e));
        } else if (d.equals("+") && e.equals("x")) {
            System.out.println(Integer.parseInt(a) - Integer.parseInt(c));
        } else if (d.equals("-") && c.equals("x")) {
            System.out.println(Integer.parseInt(a) + Integer.parseInt(e));
        } else if (d.equals("-") && e.equals("x")) {
            System.out.println(Integer.parseInt(c) - Integer.parseInt(a));
        } else if (b.equals("+") && e.equals("x")) {
            System.out.println(Integer.parseInt(c) + Integer.parseInt(a));
        } else if (d.equals("+") && a.equals("x")) {
            System.out.println(Integer.parseInt(c) + Integer.parseInt(e));
        } else if (b.equals("-") && e.equals("x")) {
            System.out.println(Integer.parseInt(a) - Integer.parseInt(c));
        } else if (d.equals("-") && a.equals("x")) {
            System.out.println(Integer.parseInt(c) - Integer.parseInt(e));
        }
    }
}

不要使用100个if语句,试试这个。在我的代码中,我将整个方程作为输入,并将其存储在数组中,然后将符号和数字的位置保存在变量中,以便以后使用这些变量来决定应该执行什么操作

这是密码

import java.util.Scanner;

public class AlgebraEquation {

    public static void main(String[] args) {

        Scanner scan = new Scanner(System.in);
        System.out.print("Enter the whole equation: ");
        String equation = scan.nextLine();
        scan.close();

        String[] equationSplit = equation.split(" ");

        // This code block is just to show how logic is working
        for (int i = 0; i < equationSplit.length; i++) {
            System.out.print(equationSplit[i] + ", ");
        }
        System.out.println();

        int xPosition = -1, const1Pos = -1, const2Pos = -1, equalPos = -1, operatorPos = -1;

        // Checking each index of array and saving position of characters
        for (int i = 0; i < equationSplit.length; i++) {
            if (equationSplit[i].equalsIgnoreCase("X")) {
                xPosition = i;
            } else if (equationSplit[i].equals("=")) {
                equalPos = i;
            } else if (equationSplit[i].matches("[-+*/]")) { // If character matches any of these "-+*/"
                operatorPos = i;
            } else {
                // Checking if const1Pos is filled or not
                if (const1Pos < 0) {
                    const1Pos = i;
                } else {
                    const2Pos = i;
                }
            }
        }

        // This code block is just to show how logic is working
        System.out.println(equationSplit[xPosition] + " Position: " + xPosition);
        System.out.println(equationSplit[equalPos] + " Position: " + equalPos);
        System.out.println(equationSplit[operatorPos] + " Position: " + operatorPos);
        System.out.println(equationSplit[const1Pos] + " Position: " + const1Pos);
        System.out.println(equationSplit[const2Pos] + " Position: " + const2Pos);

        String operator = equationSplit[operatorPos];
        switch (operator) {
        case "+":
            System.out.println("Addition");
            // Do you calculation based on relative position of equal, const1Pos, and
            // const2Pos
            break;
        case "-":
            System.out.println("Subtraction");
            break;
        case "*":
            System.out.println("Multiplication");
            break;
        case "/":
            System.out.println("Division");
            break;
        }
    }
}

你好要将数字读取为int,您需要使用
nextInt()
或在读取后使用
Integer.parseInt()
进行转换。此外,请不要使用
=
比较字符串。使用str1.equals(str2)但是如果我不知道我要读取的值是否为int,该怎么办?创建一个方法
boolean isInt(String)
,在这里检查它并查看它是否抛出错误。如果返回
false
则返回
true
。此外,您还可以使用regex分隔数字、符号和字母。这很有帮助,一旦我找到解决方案,thxi将发布解决方案。这是问题的答案,而不是具体问题本身。我建议使用
nextLine()将整个输入行存储在字符串中
并使用
array.split(“”)拆分它的数组然后使用for循环获取X、=和数字的位置。
Enter the whole equation: 5 + x = 8 //(Enter Key Pressed)
5, +, x, =, 8, 
x Position: 2
= Position: 3
+ Position: 1
5 Position: 0
8 Position: 4
Addition