数组取值
假如有个数组为 String[] num = {"1001 2002 3003 4004 5005"};请问如何将这个集合里的元素取出来并且跟一个变量n去对比,
n从0开始到10000结束,如果n和num里的值相等就打印出来,不相等则输出*号 --------------------编程问答-------------------- 首先“String[] num = {"1001 2002 3003 4004 5005"};”这个数组我估计楼主是想这样的吧
:String[] num = {"1001", "2002", "3003", "4004", "5005"};
“n从0开始到10000结束”是指n在这个区间的摸个固定值呢还是在这个区间里变化的?
--------------------编程问答--------------------
public static void main(String[] args) {
String[] arr = { "1001 2002 3003 4004 5005" };
String[] a = arr[0].split(" ");
for (String str : a) {
for (int n = 0; n <= 10000; n++) {
if (Integer.valueOf(str) == n) {
System.out.println(n);
} else {
System.out.println("*");
}
}
}
}
思路是这样。不复杂、不过1W太大了。控制太显示不全、不好贴运行结果。自己换个小点的数字试试 --------------------编程问答-------------------- 很简单的事,看下基础书 --------------------编程问答-------------------- String num = "1001 2002 3003 4004 5005"; // 应该是这样写,你本来就不是个数组。
String arrs = num.split(" "); // 用空格切分成数组
List lst = Arrays.toList(arrs); // 转换为List
HashSet hs = new HashSet(lst); // 再转换为Hash集,便于快速识别
for (int i=0;i<=10000;i++) {
if (hs.contains(String.valueOf(i))) { // 检查是否包含
System.out.println(i);
}
}
以上为了清晰,我逐句拆出来了,希望你能理解。 --------------------编程问答-------------------- LZ的数组到底是什么形式的,是只有一个字符串,还是笔误有多个字符串?
String[] num = {"1001", "2002", "3003", "4004", "5005"};--------------------编程问答--------------------
int[] arr = new int[10001];
//或者用List
//List<Integer> list = new ArrayList<Integer>();
for (int i=0; i<=10000; i++) {
arr[i] = i;
//list.add(i);
}
for (String s : num) {
int n = Ineteger.valueOf(s);
if (Arrays.binarySearch(arr, n) >= 0) { //用数组的查找判断是否存在
//if (list.contains(n)) { //或者用list的contains判断是否存在
System.out.println(s);
} else {
System.out.println("*");
}
}
死循环了- - --------------------编程问答-------------------- 。。。。。。。。。
public static void main(String[] args) {
String[] arr = { "1001 2002 3003 4004 5005" };
String[] a = arr[0].split(" ");
int count = 0;
for (String str : a) {
for (int n = 0; n <= 10000; n++) {
if (Integer.valueOf(str) == n) {
System.out.println(n);
} else {
count++;
System.out.println("*");
}
}
}
System.out.println(count);
}
count会输出啊、。怎么会死循环 --------------------编程问答-------------------- 2L的代码木有死循环吧,只不过它循环套循环,比较慢,而且
用集合或数组直接查找可能更好一些
public static void main(String[] args) {
String[] arr = { "1001 2002 3003 4004 5005" };
String[] a = arr[0].split(" ");
List<Integer> list = new ArrayList<Integer>();
for (int i=0; i<10000) list.add(i);
for (String str : a) {
int n = Integer.valueOf(str);
if (list.contains(n)) {
System.out.println(n);
} else {
System.out.println("*");
}
}
}
--------------------编程问答-------------------- 2楼、3楼的方法都可以 --------------------编程问答--------------------
--------------------编程问答--------------------
public class TTT {
/**
* @param args
*/
public static void main(String[] args) {
String[] num = {"1001", "2002", "3003", "4004", "5005"};
String[] arr = new String[10001];
for (int i = 0; i <=10000; i++){
arr[i] = "*" ;
}
for(int i= 0; i < num.length; i++){
arr[Integer.parseInt(num[i])] = num[i] ;
}
System.out.println("--start--") ;
for (int i = 0; i <=10000; i++){
System.out.println(arr[i] ) ;
}
System.out.println("--end--") ;
}
}
这个思路比较新颖。 --------------------编程问答--------------------
数组里有重复的就打印不准确了 ,我觉得2楼可行 --------------------编程问答--------------------
数组里有重复的,对你来说,跟同一个没区别啊?难道你需要同时显示两个?
补充:Java , Java EE