在你得到这个想法之前,我不是要求你们做我的工作,只是我接受了这项任务
完成函数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"一个"。
任何提示?
最诚挚的问候。
答案 0 :(得分:2)
如果输入仅限于"one","two","three","four"
,您可以使用String.equals
和if-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)
将字符串和数字放在一起(枚举,对象,映射)有一些可能性,但最好的方法是解决它是String
,Integer
的映射。
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));
}
}