java - 如何在Java中使x是整数作为条件

标签 java

我正在为学校编写一个十进制到二进制到八进制到十六进制到基数 20(我添加了基数 36 功能)的计算器。它可以工作并捕获一些异常,但当输入小数(如 4.5,而不是数字系统)值时它会做一些奇怪的事情。我希望它能够捕获它并将用户带回到我的代码顶部并说“请重试并输入一个整数”,我想我应该使用 if 语句来做到这一点,我只需要知道如何使“x 是整数”成为条件。顺便说一句,我正在使用 Java。

这是我正在处理的代码的一部分:

public class mainconvert //creates my main class

{ //start mainconvert

    public static int manualparse(String m)//initializes an int method for a manual parse instead of using the library
    {//start manualparse

        int parsedvalue = 0;//creates an int that the parsed value will go into
        char[] split = m.toCharArray();//takes the input and splits it into an array of characters so we can take each individual character and convert it to an int
        int n = 0;//creates an int that will be used for the power that 10 is raised to while converting the input place

        for(int o=m.length()-1; o>=0; o--)//creates a for loop that takes each place in the array and loops through the conversion process until every place is converted
        {//start conversion for
            parsedvalue += Math.pow(10,n)*(split[o]-'0');//does the math, takes the char in each place, gets its ascii value, subtracts ascii 0 from that and multiplies it by 10^n, seen previously
            n++;//increases n (the exponent) by 1 after each loop to match the place that is being worked on
        }//end conversion for

        return parsedvalue;//returns the final parsed value
    }//end manualparse

    public static void main(String args[])//creates the main entry point
    {//start main

        JOptionPane pane = new JOptionPane();//makes JOptionPane "pane" so I don't have to type out "JOptionPane"

        boolean binput = false;

        do{//start do for do while loop for the reset on the exception catcher

            try{//start try for exception catcher

                String input = pane.showInputDialog("Enter value for conversion");//makes a Jpane with an input box for the value to be converted
                StringTokenizer toke = new StringTokenizer(input);//makes a string tokenizer for the input
                String k = toke.nextToken();//uses toke.nextToken to grab the token put into the input box so it can be used, it is made into a string
                int x = manualparse(k);//uses the manual parsing method created earlier to parse the token grabbed in string k into an int for use in our conversions

// then a bunch of calculator stuff and here's the end of the try/catch and do while loop

}//end try for exception catcher

catch(Exception ex)//catches exception

{//start catch

binput = true;//changes boolean to true to trigger do while loop

pane.showMessageDialog(null, "Please try again and input an integer");//displays error

}//end catch

}while(binput==true);//while for do while loop, triggers while the boolean binput is true

最佳答案

用户以字符串形式输入内容。只需检查该字符串的格式是否正确。

boolean valid;
int input;
String inputString = ...;
try
{
    input = Integer.parseInt(inputString, 36);
    valid = true;
} catch (NumberFormatException e)
{
    valid = false;
    input = 0;
}

或更直观的解决方案:

boolean valid = inputString.matches("(+|-)?[0-9a-zA-Z]+");

关于java - 如何在Java中使x是整数作为条件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13744848/

相关文章:

java - 当接收实体的更新时,如何访问不应该理解传入 DTO 的类中的先前值?

java - servlet 的数据库连接问题 - Java webapp

java - 与java同学解析泛型类型

java - Mockito 验证一个函数在我的例子中被调用一次

java - 如果用户在 mysql 长查询中间关闭页面怎么办?

java - 哪些Java库可用于基本图像处理?

java - 有没有更简单的方法来编写这个 equalsIgnoreCase 检查链?

Java JDBC 获取表

Java Web 服务器以 JSON 进行响应

java - 如何输入将分配给变量的字符串?