示例int i=185;
然后我想得到'我'包含3位数字,这些数字是1,8和5。
答案 0 :(得分:8)
提示:您需要将数字的模数乘以10才能得到最后一位数字。然后将相同的数字除以10,得到前两个数字。根据需要多次重复自己。
答案 1 :(得分:3)
第一个解决方案:
/**
* Using Integer/String classes functionality
*/
public class Shweta {
private static Integer i = 185;
public static void main(String... args) {
String iStr = i.toString();
for (char digit : iStr.toCharArray()) {
System.out.println(digit);
}
System.out.println("Length is: " + iStr.length());
}
}
第二个解决方案:
/**
* Doing that in a 'homework' way
*/
public class ShwetaNoCheats {
private static Integer i = 185;
public static void main(String... args) {
int length = 0;
while (i != 0) {
System.out.println(i - (i / 10) * 10);
i /= 10;
length++;
}
System.out.println("Length is: " + length);
}
}
答案 2 :(得分:2)
执行此操作的简单方法是转换为与语言环境无关的字符串,然后查看字符串中的每个字符。如果这是家庭作业,我不会给出最终解决方案,但这里有一些重要的API ...
转换为字符串:
String stringForm = Integer.toString(number);
处理否定信息:
int nonNegative = Math.abs(number);
字符串的长度:
int length = stringForm.length();
获取字符串的第i个字符:
char c = stringForm.charAt(i);
答案 3 :(得分:0)
一种方法是:
int i = 185;
int a = i / 100; // 1
int b = (i % 100) / 10; // 8
int c = i % 10; // 5
但我觉得你需要更通用的东西?尝试通过字符串
int i = 185;
String iAsString = String.format("%d", i);
if(iAsString.contains("1")){
// do something...
}
更高级:
int i = 185;
String iAsString = String.format("%d", i);
HashSet<Integer> set = new HashSet<Integer>();
for(char c : iAsString.toCharArray()){
set.add(Integer.valueOf(String.valueOf(c)));
}
然后你可以处理这个集合。
答案 4 :(得分:0)
对于积分i
,Math.ceil(Math.log10(i))也给出了小数位数。