当前位置:编程学习 > JAVA >>

数组取值

假如有个数组为 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("*");
    }
}
--------------------编程问答--------------------
引用 2 楼  的回复:
Java code
    public static void main(String[] args) {
        String[] arr = { "1001 2002 3003 4004 5005" };
        String[] a = arr[0].split(" ");
        for (String str : a) {
            for (……


死循环了- - --------------------编程问答--------------------
引用 6 楼  的回复:
引用 2 楼  的回复:

Java code
public static void main(String[] args) {
String[] arr = { "1001 2002 3003 4004 5005" };
String[] a = arr[0].split(" ");
for (String str : a) {
for (……


死循环了- -
。。。。。。。。。
	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--") ;
}

}
--------------------编程问答--------------------
引用 4 楼  的回复:
String num = "1001 2002 3003 4004 5005"; // 应该是这样写,你本来就不是个数组。
String arrs = num.split(" "); // 用空格切分成数组
List lst = Arrays.toList(arrs); // 转换为List
HashSet hs = new HashSet(lst); // 再转换为Hash集,便于快速识……


这个思路比较新颖。 --------------------编程问答--------------------
引用 11 楼  的回复:
引用 4 楼 的回复:

String num = "1001 2002 3003 4004 5005"; // 应该是这样写,你本来就不是个数组。
String arrs = num.split(" "); // 用空格切分成数组
List lst = Arrays.toList(arrs); // 转换为List
HashSet hs = new HashSet(lst); // 再……

数组里有重复的就打印不准确了 ,我觉得2楼可行 --------------------编程问答--------------------
引用 12 楼  的回复:
数组里有重复的就打印不准确了 ,我觉得2楼可行


数组里有重复的,对你来说,跟同一个没区别啊?难道你需要同时显示两个?
补充:Java ,  Java EE
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,