更改单词" one"数字" 1"等等

时间:2014-03-11 12:26:25

标签: java

在你得到这个想法之前,我不是要求你们做我的工作,只是我接受了这项任务

  

完成函数int comp(String s1,String s2)。为了这   function,s1和s2是以下之一   "一个"" 2""三"" 4&#34 ;.例如,s1可能是两个,s2可能是   四岁。显然,s1和s2对应于数字。功能comp   如果s1(作为数字)小于s2,则应返回负数   (作为数字),如果它们相等(作为数字)则为零,并且为正数   否则。例如,comp(" two"," four")应返回a   负数,因为2小于4.

但我不知道如果已经分配了s1,我将如何分配s1"一个"。

任何提示?

最诚挚的问候。

3 个答案:

答案 0 :(得分:2)

如果输入仅限于"one","two","three","four",您可以使用String.equalsif-else块来指定正确的int值。像这样的东西:

private int parseInt(String s) {
    if(s.equals("one"))
        return 1;
    if(s.equals("two"))
        return 2;
...
}

<强>更新 一个有趣的实现可以通过enum完成:

public class Main {

    public enum NUMBER {

        zero("zero", 0), one("one", 1), two("two", 2), three("three", 3), four("four", 4);

        private String  string;
        private int     number;

        NUMBER(String s, int n) {
            string = s;
            number = n;
        }

        public int getInt() {
            return number;
        }
    };

    static public void main(String[] args) {
        System.out.println(compare("one", "two"));
        System.out.println(compare("one", "one"));
        System.out.println(compare("zero", "two"));
        System.out.println(compare("four", "two"));
    }

    public static int compare(String s1, String s2) {
        int n1 = NUMBER.valueOf(s1).getInt();
        int n2 = NUMBER.valueOf(s2).getInt();
        return Integer.compare(n1, n2);
    }
}

答案 1 :(得分:1)

我认为你可以使用比较数组:

String[] value = {"one", "two", "three", "four"}

public int comp(String s1, String s2) {
    int one = getVal(s1);
    int two = getVal(s2);
    // Compare how you like
    return Integer.compare(one, two);
}

public int getVal(String rel) {
    for (int i = 1; i < 5; i++) {
        // i - 1 due to array indexes starting at 0.
        if (value[i - 1].equalsIgnoreCase(rel)) {
            return i;
        }
    }
    return /* some error value for inability to parse */;
}

我特别喜欢这个,因为你不需要使用Integer.parseInt(),如果数字不可读,可能会抛出运行时异常。但是,如果getVal函数找不到合适的数字,您可以自己抛出一个。

如果您想要使用任何数字,我会说通过将数字按数字分解并将它们连接为数字而可能是合理的,但这可能比当前目标更先进: )

答案 2 :(得分:0)

将字符串和数字放在一起(枚举,对象,映射)有一些可能性,但最好的方法是解决它是StringInteger的映射。

public class test
{
    private HashMap<String, Integer> map = new HashMap<String, Integer>();

    public test(){
        map.put("one",1);
        map.put("two",2);
        map.put("three",3);
        map.put("four",4);
        //TODO: ....
    }

    public static void main(String args[]) {

        System.out.print(new test().comp("two","four"));

    }

    public int comp(String s1, String s2) {
        int i1 = map.get(s1);
        int i2 = map.get(s2);
        return (i1<i2 ? -1 : (i1==i2 ? 0 : 1));
    }
}