A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

  1. import java.util.ArrayList;
  2. class Test{
  3.         /**
  4.         *去掉1到100之间含7的数,并输出
  5.         */
  6.         public static void main(String[] args){
  7.                 ArrayList<Integer> al = new ArrayList<>();//创建ArrayList集合
  8.                 //将1到100添加到集合中
  9.                 for(int i=1;i<101;i++){
  10.                         al.add(i);
  11.                 }
  12.                 /*System.out.println(al.size());
  13.                 System.out.println(al);
  14.                 */
  15.                
  16.                 //遍历
  17.                 for(int i=0;i<al.size();i++){
  18.                         if(al.get(i)%10==7||al.get(i)/10==7){//余数为7或者商为7的予以移除
  19.                                 al.remove(i);
  20.                                 i--;//移除过后,索引保持不变。不写有什么后果?
  21.                         }
  22.                 }
  23.                 System.out.println(al.size());//81
  24.                 System.out.println(al);
  25.         }
  26. }
复制代码

16 个回复

倒序浏览
如果不写的话结果里会出现71 73 75 77 79
因为连续碰到两个含7的数时,当第一个数移除后,size()会减1,后一个数的索引跟着减1,占据前一个数的位置,而此时 i 的值却++了,所以后一个数就没有被get()到了。
回复 使用道具 举报
还没看到泛型
回复 使用道具 举报
已收藏~~~
回复 使用道具 举报

哦哦,也可以用StringBuffer做
回复 使用道具 举报
嗯,好好好
回复 使用道具 举报
DDK畅 中级黑马 2016-1-19 21:15:10
7#
完全不知道从何下手,至少目前不知道,过段时间估计就知道了 到时候还能拿你的这个题目来做练习
回复 使用道具 举报
class Text {
        public static void main(String[] args) {
                for (int i=1;i <= 100 ;i++ ) {
                        if (i%7==0||i/10==7||i%10==7) {
                                continue;
                        }
                        System.out.println(i);
                }
        }
}
回复 使用道具 举报
直接用for循环不就好了吗?为什么还要用泛型?这不会更加麻烦吗?
回复 使用道具 举报
受教了,这题听说真的是黑马的面试题
回复 使用道具 举报
yearn 中级黑马 2016-1-27 15:01:11
11#
我觉得这种方式代码简单一点
  1. class  Test15
  2. {
  3.         public static void main(String[] args)
  4.         {
  5.                 for (int x=1;x<=100 ;x++ )
  6.                 {
  7.                         String str = String.valueOf(x);
  8.                         if(!str.contains("7"))
  9.                                 System.out.println(x);
  10.                 }
  11.         }
  12. }
复制代码
回复 使用道具 举报 1 0
本帖最后由 BlackFlag 于 2016-1-28 01:12 编辑

public class Test
{
        public static void main(String[] args)
        {
                for (Integer i = 1; i < 101; i++)
                {
                        if (i.toString().contains("7"))
                                continue;
                        System.out.println(i);
                }
        }
}//把Integer转换成String然后调用contains(...)方法即可,没必要那么麻烦。
回复 使用道具 举报
for (int i = 1; i <101; i++) {
        //把int类型的数据转换成字符串格式的
        String iStr=String.valueOf(i);


        if(!iStr.contains("7"))
        {
                 System.out.println(i);
        }
}
回复 使用道具 举报
qt520 中级黑马 2016-1-28 11:04:56
14#
敲敲代码,学习了
回复 使用道具 举报
学习了~
回复 使用道具 举报
好厉害,学习了
回复 使用道具 举报
qt520 发表于 2016-1-28 11:04
敲敲代码,学习了

我感觉你一直在水
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马