制作一个显示下一年没有Java特色数字的程序?

时间:2014-02-15 02:00:07

标签: java string int

我想知道是否有人可以帮我解决这个问题。该计划的目的是假设用户输入一年,比如1980年,并且该计划返回具有显着数字的下一年,特别是所有数字都不同,例如2013-2019,2012年没有特色,因为第二个出现两次,2013-2019都是截然不同的,因为数字只出现一次。

用户输入年份 程序计算明年具有显着位数

这是我现在的代码。它的唯一目的是如果用户输入的数字是不同的,则返回true,我只能找到一种使用String类型和charAt方法的方法。我不认为你可以增加字符串,但如果用户可以输入一个int并且程序继续递增,直到它找到一个不同的数字,但我能想到的是一个接受字符串的函数。有没有类似的方法我可以使用int作为参数或有没有办法让它可以使用字符串?

 public static boolean hasDuplicates(String text){
        for(int i = 0; i < text.length() - 1; i++){
            for(int j = i + 1; j < text.length(); j ++){
                if(text.charAt(i) == text.charAt(j)){
                    return true;
                }
            }
        }

        return false;
    }

任何建议表示赞赏。我也对缺乏标签表示歉意。 编辑:谢谢。 http://pastebin.com/FQj1yeCk

的完整代码

4 个答案:

答案 0 :(得分:3)

您可以使用int执行此操作,然后使用模运算查找单个数字,如下所示:

int num = 1950;

int thousands = (num / 1000) % 10;
int hundreds = (num / 100) % 10;
int tens = (num / 10) % 10;
int ones = num % 10;

System.out.printf("%d %d %d %d",  thousands, hundreds, tens, ones);

输出1 9 5 0

答案 1 :(得分:1)

给出

int i;

您可以使用Integer.toString(i)获取其字符串值。

答案 2 :(得分:1)

您可以使用Integer.toString(i)从int获取字符串。

所以,使用你创建的方法:

//int 'year' entered by user
while(hasDuplicates(Integer.toString(year))) {
    year += 1;
}

答案 3 :(得分:0)

要在String和int之间进行转换,您可以使用Integer.parseInt(text),如果需要,它将为您提供返回和Integer对象,该对象将被取消装入。

要转换另一种方法,可以将int打包成Integer对象并在其上调用toString。

所以你可以像这样创建一个重载方法:

public static boolean hasDuplicates(int value){
    return hasDuplicates(new Integer(value).toString());
}