制作一个显示下一年的程序,而该程序在Java中没有明显的数字



我想知道是否有人能帮我解决这个问题。该程序的目的是假设用户输入一年,比如1980年,然后程序返回具有不同数字的下一年,不同的是所有数字都不同,例如2013-2019年、2012年由于数字二出现两次而不不同,2013-2019年由于数字只出现一次而完全不同。

用户输入年份程序计算具有不同数字的下一年

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

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

您可以使用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);

输出CCD_ 2。

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

因此,使用您创建的方法:

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

给定

int i;

可以使用Integer.toString(i)获取其String值。

要在String和int之间进行转换,您可以使用Integer.parseInt(text),如果您愿意,它会返回一个将被取消装箱的Integer对象。

要转换为另一种方式,您可以将int框成Integer对象,并对其调用toString

所以你可以创建一个重载的方法,比如:

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

最新更新