这是一种安全的编程习惯吗?

时间:2015-07-10 13:48:44

标签: java string int

import java.util.*;

class Test{
    private int intToken;       
    public Test(){
        intToken = 0;          
    }
    // A method that returns the last character of a String
    // This here returns a string regardless of input
    public String lastChar(String tok){
        String token = String.valueOf(tok);
        String strToken = token.substring(token.length()-1);
        return strToken;
    }
    public static void main(String[]args){
        Test test = new Test();
        Scanner scan = new Scanner(System.in);
        System.out.println("Enter a number to get its last number");
        String value = scan.nextLine();
        System.out.println(test.lastChar(value));  
    }
}

上述方法lastChar()的代码适用于Integer和String。由于我正在练习编程,我真的想创建一个返回StringInteger的方法,但在我希望检测输入是Integer还是{{}的方法中1}}。

在创建方法之后,我首先尝试了

String
即使Scanner scan = new Scanner(tok); scan.hasNextInt(); 中有false

也会返回int

我也试过

tok

即使tok.contains("0,1,2,3,4,5,6,7,8,9"); 中有false,它也会返回int。我还没有学习tok类型。但我注意到char返回了tok.contains("1");

我想使用true结果为booleanString创建单独的处理程序。那么代码到目前为止工作。

现在我的问题是,使用像这样的单一方法是否安全或良好 Integer,或者我应该定义两个单独的方法lastChar()lastInt()

5 个答案:

答案 0 :(得分:4)

我想知道String的值是否为整数(如" 1234"),您可以尝试转换String:如果有异常,则String的值不是整数:

synchronized

答案 1 :(得分:0)

Scanner scan = new Scanner("tok');

这应该是单引号或双引号,而不是两者

同样hasNextInt()定义下一个扫描程序令牌是否为int,当然它会返回false,因为你的输入没有int

tok.contains("1"); 

这是检查它是否包含字符串“1”而不是数字1

您的方法返回一个String,而不是String和Int。即使输入“1”,也会将其视为字符串

您应该详细了解这些方法及其返回方式

How to check the input is an integer or not JAVA?

您始终可以测试输入并使用NumberFormatException或MismatchInputException

答案 2 :(得分:0)

看看https://docs.oracle.com/javase/tutorial/java/data/index.html 它讨论了Java中数字和字符串之间的差异。如果要返回两种不同的数据类型,肯定需要两种方法。

答案 3 :(得分:0)

andynaz和Huang Chen的回答有点补充 为了防止基于捕获的编程,我们鼓励使用谷歌Guava Library 你在图书馆 Ints.tryParse(String str)如果无法解析str,则返回null 否则从str解析整数

希望这能回答你的问题

答案 4 :(得分:0)

如果你正在练习编程,你可以循环遍历字符串中的字符并通过Character

检测一个是否为数字
    String x = getString();
    boolean hasNonDigits = false;
    for(char c : x.toCharArray()){
        if(!Character.isDigit(c)){
            hasNonDigits = true;
            break;
        }
    }
    if(hasNonDigits){
        // It's not an integer
    }

但如果您正在寻找更传统的方法,请使用正则表达式Pattern

    Pattern p = Pattern.compile("\\D");
    String x = getString();
    boolean isInteger = !p.matcher(x).find();