我想知道是否有人可以帮我解决这个问题。该计划的目的是假设用户输入一年,比如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
的完整代码答案 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)
答案 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());
}