黑马程序员技术交流社区
标题:
怎么把下面的字符串打印
[打印本页]
作者:
黑马华
时间:
2013-4-30 12:37
标题:
怎么把下面的字符串打印
本帖最后由 黑马华 于 2013-4-30 20:13 编辑
假设有一个集合,里面装的是字符串,但有的字符串是纯数字,我想把它找出来并打印怎么办?例如下面就找个123这个并打印,例如下面代码
package com.itheima;
import java.util.HashSet;
import java.util.Set;
public class Jihe {
public static void main(String[] args) {
Set<String>t = new HashSet<String>();
t.add("abc");
t.add("123");
t.add("heima");
t.add("a12d");
}
}
我的这个又错在哪里呢?怎么改正?
package com.itheima;
import java.util.HashSet;
import java.util.Set;
public class Jihe {
public static void main(String[] args) {
Set<String>t = new HashSet<String>();
t.add("abc");
t.add("123");
t.add("heima");
t.add("a12d");
for(String str: t){
//char []a = str.toCharArray();
for(int i = 0;i<str.length(); i++){
if(str.charAt(i)<0||str.charAt(i)>9) break;
System.out.println(str);
}
}
}
}
作者:
陈圳
时间:
2013-4-30 12:58
str.replaceAll("\\d+","")=="" sysout(str)搞定
作者:
harborbest
时间:
2013-4-30 13:04
package it.harbor.dom4j;
import java.util.HashSet;
import java.util.Set;
public class Demo {
public static void main(String[] args) {
Set<String> t = new HashSet<String>();
t.add("abc");
t.add("123");
t.add("heima");
t.add("a12d");
// 转化为字符串数组,将该 set 转储到一个新分配的 String 数组:
String[] str = t.toArray(new String[0]);
//遍历数组
for (String string : str) {
System.out.println(string);
}
int temp = 0;
for (int i = 0; i < str.length; i++) {
try {
temp = Integer.valueOf(str[i]);//判断能否转换成数字
System.out.println(temp);
} catch (Exception e) {
System.out.println("Can not be changed to number!");
}
}
}
}
复制代码
作者:
丘凤光
时间:
2013-4-30 13:07
字符串匹配数字,最好的方法就是用正则表达式
代码如下
package cn.qiu.day5;
/**
* 需求:假设有一个集合,里面装的是字符串,但有的字符串是纯数字,我想把它找出来并打印怎么办?例如下面就找个123这个并打印
*/
import java.util.HashSet;
import java.util.Set;
public class Jihe {
public static void main(String[] args) {
Set<String>t = new HashSet<String>();
t.add("abc");
t.add("123");
t.add("heima");
t.add("a12d");
String regex="[\\d]+";//设定匹配规则
for(String str:t){//增强for循环
if(str.matches(regex)){//如果和规则匹配就是数字,否者不是
System.out.println(str);
}else{
System.out.println(str+"不是纯数字");
}
}
}
}
复制代码
——
作者:
cowthan
时间:
2013-4-30 14:49
楼主的代码有点逻辑问题:
for(int i = 0;i<str.length(); i++){
if(str.charAt(i)<0||str.charAt(i)>9) break;
System.out.println(str); //这样的话"1aaa"也会被打印吧
}
所以应该改成:
for(String str: t){
boolean flag = true; //表示符合要求
for(int i = 0;i<str.length(); i++){
if(str.charAt(i)<0||str.charAt(i)>9) { flag = false; break; }
}
if(flag) system.out.println(str);
}
作者:
kaka小明
时间:
2013-4-30 18:23
LZ程序有个逻辑问题,如果为数字字串,那么会打印3个123,因为你的打印语句是在for循环内的,所以正如LS所说明的,需要加个标志。还有个小问题,字符比较范围为‘0’-‘9’,不是0-9,字符比较是比较ASII码,‘0’--48。数字代表字符的ASII码哟!
import java.util.HashSet;
import java.util.Set;
public class Main {
public static void main(String[] args) {
Set<String>t = new HashSet<String>();
boolean flg=false;
t.add("abc");
t.add("123");
t.add("heima");
t.add("1212");
for(String str: t){
boolean flag = true; //表示符合要求
for(int i = 0;i<str.length(); i++){
if(str.charAt(i)<'0'||str.charAt(i)>'9')
{ flag = false;
break;
}
}
if(flag)
System.out.println(str);
}
}
}
作者:
Super_Class
时间:
2013-4-30 23:22
Set是一个集合类。集合类中数据的打印效果基本都是迭代。
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2