黑马程序员技术交流社区

标题: 活动--区别奇偶数答案提交贴! [打印本页]

作者: FFF    时间: 2013-12-2 15:55
标题: 活动--区别奇偶数答案提交贴!
本帖最后由 FFF 于 2013-12-6 23:29 编辑

云七开班在即。而看到有同学因技术分不够而对云七望而却步,此乃令吾等版主心之痛也,恨不能直接加你们十分八分的。因此特地出一个这个的活动给大家,给各位同学。送你们一阵东风,送你们上云七。想进云七的,要捉紧机会了,想要入学黑马的,也要做好技术分的准备了!加油吧!!!同学们、路在你脚下,希望在你手中```
详情看看:
http://bbs.itheima.com/thread-101401-1-1.html
此贴为答案提交贴。

活动已经结束。请各位下次起早。谢谢!

作者: 还不到时候    时间: 2013-12-2 17:05
立马写

作者: 贾波    时间: 2013-12-2 17:06
[论坛活动] 云七开班前的最后一次活动-----区别奇偶数  完成了  请加分

Odevity.zip

4.12 KB, 阅读权限: 100, 下载次数: 1

[论坛活动] 云七开班前的最后一次活动-----区别奇偶数


作者: 还不到时候    时间: 2013-12-2 18:31
Test4.zip (1.01 KB, 下载次数: 7)
请版主注意查收!谢谢!



作者: 硬件之家    时间: 2013-12-2 20:07
本帖最后由 硬件之家 于 2013-12-2 20:09 编辑

黑马—査显合.zip (5.44 KB, 下载次数: 2)



作者: 半夜雨半夜雨    时间: 2013-12-2 20:14
  1. package com.liyeyu.demo;

  2. import java.util.*;
  3. public class NumDemo {

  4.         public static void main(String[] args) {
  5.                
  6.                 Scanner scan=new Scanner(System.in);//读取键盘录入
  7.                 //创建2个ArrayList分别存储奇偶数
  8.                 List list1=new ArrayList();
  9.                 List list2=new ArrayList();
  10.                 System.out.println("请输入要区分奇偶的整数:");
  11.                 String x=scan.next();
  12.                 int n=0;
  13.                 try
  14.                 {
  15.                         n=Integer.parseInt(x);//如果输入的不是整数就抛出异常
  16.                 }catch(Exception e){
  17.                         System.out.println("请输入0到10000的正整数:");
  18.                         return ;//报错,且停止程序
  19.                 }
  20.                 if(2<=n&&n<=10000)
  21.                 {
  22.                         for(int i=1;i<=n;i++)
  23.                         {
  24.                                 if((i%2)==0)
  25.                                 {
  26.                                         list2.add(i);//将偶数加入list2
  27.                                 }else{
  28.                                         list1.add(i);//将奇数加入list1
  29.                                 }
  30.                         }
  31.                 }else
  32.                 {
  33.                         System.out.println("你的输入超出设定范围,请重新输入:");
  34.                 }
  35.                 //创建迭代器,取出元素
  36.                 Iterator it1=list1.iterator();
  37.                 Iterator it2=list2.iterator();
  38.                 while(it1.hasNext())//判断集合是否存在元素
  39.                 {
  40.                         System.out.print(it1.next()+" ");
  41.                 }
  42.                 System.out.println();
  43.                 while(it2.hasNext())
  44.                 {
  45.                         System.out.print(it2.next()+" ");
  46.                 }
  47.         }

  48. }
复制代码

作者: 半夜雨半夜雨    时间: 2013-12-2 20:14
  1. package com.liyeyu.demo;

  2. import java.util.*;
  3. public class NumDemo {

  4.         public static void main(String[] args) {
  5.                
  6.                 Scanner scan=new Scanner(System.in);//读取键盘录入
  7.                 //创建2个ArrayList分别存储奇偶数
  8.                 List list1=new ArrayList();
  9.                 List list2=new ArrayList();
  10.                 System.out.println("请输入要区分奇偶的整数:");
  11.                 String x=scan.next();
  12.                 int n=0;
  13.                 try
  14.                 {
  15.                         n=Integer.parseInt(x);//如果输入的不是整数就抛出异常
  16.                 }catch(Exception e){
  17.                         System.out.println("请输入0到10000的正整数:");
  18.                         return ;//报错,且停止程序
  19.                 }
  20.                 if(2<=n&&n<=10000)
  21.                 {
  22.                         for(int i=1;i<=n;i++)
  23.                         {
  24.                                 if((i%2)==0)
  25.                                 {
  26.                                         list2.add(i);//将偶数加入list2
  27.                                 }else{
  28.                                         list1.add(i);//将奇数加入list1
  29.                                 }
  30.                         }
  31.                 }else
  32.                 {
  33.                         System.out.println("你的输入超出设定范围,请重新输入:");
  34.                 }
  35.                 //创建迭代器,取出元素
  36.                 Iterator it1=list1.iterator();
  37.                 Iterator it2=list2.iterator();
  38.                 while(it1.hasNext())//判断集合是否存在元素
  39.                 {
  40.                         System.out.print(it1.next()+" ");
  41.                 }
  42.                 System.out.println();
  43.                 while(it2.hasNext())
  44.                 {
  45.                         System.out.print(it2.next()+" ");
  46.                 }
  47.         }

  48. }
复制代码

作者: 枫儿    时间: 2013-12-2 20:25
半夜雨半夜雨 发表于 2013-12-2 20:14

请以zip格式提交!!!
作者: 王东旭    时间: 2013-12-2 21:22

作者: 潇湘溪语    时间: 2013-12-2 21:36
本帖最后由 潇湘溪语 于 2013-12-3 09:59 编辑

/*
思路:
1、定义一个for循环方法,变量为n,遍历到10000;
2、用户输入变量x,如果x模2的余数为0,打印此时n遍历的数字;如果x模2为1,再打印此时n遍历的数字;打印要分组进行;
3、如果x不是0-10000之内,抛出异常,让用户重新输入。
*/

class Yun7
{
        public static void main(String[] args)
        {
                System.out.println("请输入要区分奇偶的整数,请输入0-10000的正整数");
                //在客户端做隐形提示暂时不会,看视频只到17天,没学到这一步…
                try
                {
                        method(20);//用户可输入任意整数
                }
                catch (InPutException e)
                {
                        System.out.println(e.toString()+",请重新输入");
                }
        }

        public static void method(int x) throws InPutException
        {
                if(x>=0 && x<=10000 && x%2==0)
                {
                        forfor(x,0);//先取偶数序列
                        forfor(x,1);
                }
                else
                        throw new InPutException("您的输入超出设定范围");
        }

        public static void forfor(int x, int a)//for循环需要利用二次,可以写成方法调用
        {
                for (int n=0; n<=x && n<=10000; n++)//循环到10000即可;
                {        
                        if(n%2==a)//可以定义a为0或1,为0则n取偶数,为1则n取奇数
                                System.out.print(n+" ");//此处不用换行
                }
                System.out.println(" ");
        }
}

class InPutException extends Exception//自定义:输入异常类
{
        InPutException(String msg)
        {
                super(msg);
        }
}
输入20的时候,显示结果如下:
请输入要区分奇偶的整数,请输入0-10000的正整数
0 2 4 6 8 10 12 14 16 18 20
1 3 5 7 9 11 13 15 17 19


输入15的时候,显示结果如下:
请输入要区分奇偶的整数,请输入0-10000的正整数
InPutException: 您的输入超出设定范围,请重新输入


作者: 石头6004    时间: 2013-12-2 22:33
本帖最后由 石头6004 于 2013-12-3 14:07 编辑

云七,加油!擦,前面那个帖子上的图片是0到一千啊!

Odevity.zip

4.59 KB, 阅读权限: 100, 下载次数: 1


作者: 菜不鸟    时间: 2013-12-2 22:38
package com.itheima.test;
import java.util.Scanner;
public class Test {
  public static void main(String[] args) {
   System.out.println("请输入一个在[2-n]的数:");
   Scanner sc = new Scanner(System.in);//从键盘输入一个数
   String str = sc.next();
   int n = 0;
   try {
    n = Integer.parseInt(str);
    if(n < 10000 && n > 2){//判断键入的书是否在[2~10000]
     for (int i = 0; i <= n; i++) {//判断偶数
      if (i % 2 == 0) {
       System.out.print(i + " ");
      }
     }
     System.out.println("\n");
     for (int i = 1; i <= n; i++) {//判断奇数
      if (i % 2 != 0) {
       System.out.print(i + " ");
      }
     }
    }else{
     System.out.println("对不起,您输入的数不在[2-10000]这个范围内!!");
    }
   
   } catch (Exception e) {
         //throw new RuntimeException("对不起,您输入的数不合法!!");
    System.out.println("对不起,您输入的数不合法!!");
   }
  }
}

运行正常,就是不知道怎么上传截图,求分分


作者: QQ被盗    时间: 2013-12-2 23:09
  1. package com.itheima;

  2. import java.util.Scanner;

  3. /**
  4. * function 按小到大输出1到指定的n之间的奇偶数
  5. * @author Administrator
  6. *
  7. */
  8. public class Test {
  9.         public static void main(String[] args) {
  10.                 System.out.print("键盘输入:");
  11.                 Scanner scanner = new Scanner(System.in);
  12.                 try{
  13.                         int n = scanner.nextInt();
  14.                         System.out.print("输出:");
  15.                         //输出奇数
  16.                         printJiShu(n);
  17.                         System.out.println();
  18.                         //输出偶数
  19.                         printOuShu(n);
  20.                        
  21.                 }catch(Exception e){
  22.                         System.out.println("你输入的信息有误,请输入整形数据或输入的数据在2到10000之间");
  23.                 }
  24.         }
  25.        
  26.         /**
  27.          * function 按小到大输出奇数
  28.          * @param n
  29.          */
  30.         public static void printJiShu(int n){
  31.                 for(int i=0;i<=n;i++){
  32.                         //使用位运算
  33.                         //如果是奇数则最后一位总是1
  34.                         if((i&1)!=0){
  35.                                 System.out.print(i+" ");
  36.                         }
  37.                 }
  38.         }
  39.        
  40.         /**
  41.          * function 按小到大输出偶数
  42.          * @param n
  43.          */
  44.         public static void printOuShu(int n){
  45.                 for(int i=0;i<=n;i++){
  46.                         //使用位运算
  47.                         //如果是偶数最后一位为0
  48.                         if((i&1)==0){
  49.                                 System.out.print(i+" ");
  50.                         }
  51.                 }
  52.         }
  53.        
  54. }
复制代码

作者: 向阳泪无痕    时间: 2013-12-2 23:36
赶出来了呀。。。
  1. /*

  2. 需求:
  3.      1.输入整型偶数n,且2<= n <=10000,要求先把1到n中的所有奇数从小到大输出,再把所有的偶数从小到大输出。
  4.      2.要考虑当用户输入非整形字符时或超出范围的的异常处理。
  5.      3.代码必须有完整的注释。
  6.      4.代码尽可能的简单,用高的效率实现最快的速度。


  7. 思路:
  8.          1,使用IO流从控制台读出输入的数据
  9.          2,判断读到的数据类型,如果是非数字,则抛异常,是数字看是否在范围内
  10.          3,将读取到的数据进行转换(控制台为String)
  11.          4,读到的数据是正常数据则分开打印奇数和偶数,否则抛异常,采用对2求余的方法判断是否是奇偶数
  12.          5,如不在使用IO流,则关闭IO流

  13. */

  14. import java.io.*;
  15. class  OdevityDemo
  16. {
  17.         static BufferedReader bufr = null;//IO流高效加强

  18.         public static void main(String[] args)
  19.         {
  20.                 method();
  21.         }
  22.         //按要求输出指定范围内的奇偶数
  23.         public static void method()
  24.         {
  25.                 try
  26.                 {
  27.                         while (true)
  28.                         {
  29.                                 //1,键盘输入数据
  30.                                 System.out.print("\n请输入要区分奇偶的正整数:");
  31.                                 bufr = new BufferedReader(new InputStreamReader(System.in));
  32.                        
  33.                                 //2,从控制台读取数据
  34.                                 String line = bufr.readLine();

  35.                                 //不想输入时,输入over结束输入
  36.                                 if("over".equals(line) || "OVER".equals(line))
  37.                                         return;

  38.                                 //3,转换数据,如果是非数字则抛异常
  39.                                 int n = Integer.parseInt(line);

  40.                                 //4,是数字但超出范围,则要求从新输入
  41.                                 if(n<2 || n>10000)
  42.                                 {
  43.                                         System.out.print("请输入2-10000的正整数!!!");
  44.                                         continue;
  45.                                 }

  46.                                 //5,分别输出奇偶数

  47.                                 System.out.print("奇数:");
  48.                                 for(int i=1;i<=n;i++)
  49.                                         if(i%2==1)
  50.                                                 System.out.print(i+"  ");               

  51.                                 System.out.print("\n偶数:");
  52.                                 for(int i=1;i<=n;i++)
  53.                                         if(i%2==0)
  54.                                                 System.out.print(i+"  ");

  55.                                 System.out.println();//输出全部偶数后换行
  56.                         }
  57.                
  58.                 }
  59.                 catch (IOException e) //IO流读取数据失败
  60.                 {
  61.                         System.out.print("数据读取失败!");
  62.                         return;
  63.                 }
  64.                 catch(NumberFormatException ex) //数据类型转换失败
  65.                 {
  66.                         System.out.print("请输入正整数!!!");
  67.                         method(); //从新调用,从新输入
  68.                 }
  69.                 finally
  70.                 {
  71.                         try
  72.                         {
  73.                                 //6.如果IO流创建成功,则不使用时就要关闭
  74.                                 if(bufr!=null)
  75.                                         bufr.close();
  76.                         }
  77.                         catch (IOException e)
  78.                         {
  79.                                 System.out.println("关闭IO流失败!");
  80.                         }
  81.                 }
  82.         }
  83. }
复制代码

作者: 做个有理想的人    时间: 2013-12-2 23:49
import java.util.Scanner;
        /**
         * 区别奇数偶数
         */
public class Count {
        public static void main(String[] args) {
                        System.out.print("键盘输入:");
                        Scanner in=new Scanner(System.in); //输入一个字符
                        try {
                                int b=in.nextInt(); //接收字符强制转换为数字
                            if(b<2||b>10000){
                                    System.out.println("超出范围,请重新输入数字");//判断数字是否在范围内,不在输出超出范围
                            }else{
                                    System.out.println("奇数:");//输出奇数
                                    for(int i=0;i<b;i++){
                                            if(i%2!=0){
                                                    System.out.print(+i+" ");//奇数从小到大输出
                                            }
                                    }
                                    System.out.println('\r'+"偶数:");//输出偶数
                                    for(int i=0;i<b;i++){
                                            if(i%2==0){
                                                    System.out.print(+i+" ");//偶数从小到大输出
                                            }
                                    }
                            }
                           } catch (Exception e) {
                                   System.out.println("输入是非数字,请重新输入");//如果抛出异常,输出非数字
                           }
                       
        }
       
       
}

作者: 赵青超    时间: 2013-12-3 02:22
黑马程序员—区分奇偶数

Test.zip

4 KB, 下载次数: 144

黑马程序员_区分奇偶数


作者: FFF    时间: 2013-12-3 10:44
王东旭 发表于 2013-12-2 21:22

x是2<=x<=10000的自然数,当你输入1时,没有处理。也是可以输出区别的奇偶。还有,同学以后修代码要输入到代码框或者打包再传上来。谢谢你的参与。请下次多多努力!
作者: Cway㊣    时间: 2013-12-3 10:52
输入正整数,将1-n的奇数/偶数分开打印出来

DemoTestA.rar

41.24 KB, 阅读权限: 100, 下载次数: 3


作者: QQ被盗    时间: 2013-12-3 11:18
QQ被盗 发表于 2013-12-2 23:09

答过一次的还能答没,想补缺一下
作者: 酱爆    时间: 2013-12-3 11:19
OddEvenTest.rar (849 Bytes, 下载次数: 1)

作者: 菜鸟也疯狂    时间: 2013-12-3 11:33
本帖最后由 菜鸟也疯狂 于 2013-12-3 11:41 编辑

import  java.util.*;
public class OutPut
{
        public static void main(String[] args)
        {
                        System.out.println("输入整型自然数x,2<= x<=10000");    //  提示用户按要求输出自然数
                        
                        Scanner sc=new Scanner(System.in);      // 调用util包中的的 Scanner方法从键盘上输入
                        int x = sc.nextInt();                                   //  把从键盘上输入的数赋值给x
                  
                        for(int y=0;y<=x;y++)                              //  使用for循环遍历0到指定的x处,既从键盘上输入的数
                        {
                                if(y%2==1)                                      // 将遍历的数与2求余运算,若是余数为1,则此数为奇数
                                {
                                        System.out.print(y+" ");          // 将得到的奇数打印
                                }                                
                        }
                        
                        System.out.println();                             //换行
                        
                        for(int z=0;z<=x;z++)                             //  使用for循环遍历0到指定的x处,既从键盘上输入的数
                        {
                                if(z%2==0)                                     // 将遍历的数与2求余运算,若是余数为0,则此数为偶数
                                {
                                        System.out.print(z+" ");         // 将得到的偶数打印
                                }
                    }        
        }
}


作者: QQ被盗    时间: 2013-12-3 11:47
QQ被盗 发表于 2013-12-2 23:09

这是我新写的,对输入的带有空格的两个数字和对字符串、范围在2到10000进行了判断
  1. package com.itheima;

  2. import java.io.BufferedReader;
  3. import java.io.InputStreamReader;

  4. /**
  5. * function 按小到大输出1到指定的n之间的奇偶数
  6. * @author Administrator
  7. *
  8. */
  9. public class Test {
  10.         public static void main(String[] args) {
  11.                 System.out.print("键盘输入:");
  12.                 BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
  13.                 try{
  14.                         int n = Integer.parseInt(reader.readLine());
  15.                         if(n<2||n>10000){
  16.                                 throw new Exception();
  17.                         }
  18.                         System.out.print("输出:");
  19.                         //输出奇数
  20.                         printJiShu(n);
  21.                         System.out.println();
  22.                         //输出偶数
  23.                         printOuShu(n);
  24.                        
  25.                 }catch(Exception e){
  26.                         System.out.println("你输入的信息有误,请输入整形数据或输入的数据在2到10000之间");
  27.                 }
  28.         }
  29.        
  30.         /**
  31.          * function 按小到大输出奇数
  32.          * @param n
  33.          */
  34.         public static void printJiShu(int n){
  35.                 for(int i=0;i<=n;i++){
  36.                         //使用位运算
  37.                         //如果是奇数则最后一位总是1
  38.                         if((i&1)!=0){
  39.                                 System.out.print(i+" ");
  40.                         }
  41.                         if((i+1)%100==0){
  42.                                 System.out.println();
  43.                         }
  44.                 }
  45.         }
  46.        
  47.         /**
  48.          * function 按小到大输出偶数
  49.          * @param n
  50.          */
  51.         public static void printOuShu(int n){
  52.                 for(int i=0;i<=n;i++){
  53.                         //使用位运算
  54.                         //如果是偶数最后一位为0
  55.                         if((i&1)==0){
  56.                                 System.out.print(i+" ");
  57.                         }
  58.                         if((i+1)%100==0){
  59.                                 System.out.println();
  60.                         }
  61.                 }
  62.         }
  63.        
  64. }
复制代码

[attach]31296[/attach]

[attach]31297[/attach]

[attach]31298[/attach]




作者: 天ya~_琼楼    时间: 2013-12-3 12:49
版主辛苦了!

test--梁程峰.zip

4.35 KB, 阅读权限: 100, 下载次数: 1


作者: 做个有理想的人    时间: 2013-12-3 12:51
做个有理想的人 发表于 2013-12-2 23:49
import java.util.Scanner;
        /**
         * 区别奇数偶数

//昨天太晚了感觉效率没做好,今天有重新改了一下,for循环一次,提高效率,老师看下还有那地方不太好,谢谢了
import java.util.Scanner;
        /**
         * 区别奇数偶数
         */
public class Count {
        public static void main(String[] args) {
                String odd=""; //定义奇数字符串
                String even="";//定义偶数字符串
                        System.out.print("键盘输入:");
                        Scanner in=new Scanner(System.in); //输入一个字符
                        try {
                                int b=in.nextInt(); //接收字符强制转换为数字
                            if(b<2||b>10000){
                                    System.out.println("超出范围,请重新输入数字");//判断数字是否在范围内,不在输出超出范围
                            }else{
                                    System.out.println("奇数:");//输出奇数
                                    for(int i=0;i<=b;i++){
                                            if(i%2!=0){
                                                    odd=odd+i+" ";//将所有的奇数从小到大赋值给odd字符串
                                            }else{
                                                    even=even+i+" ";//将所有的偶数从小到大赋值给odd字符串
                                            }
                                    }
                                   
                                 
                            }
                           } catch (Exception e) {
                                   System.out.println("输入是非数字,请重新输入");//如果抛出异常,输出非数字
                           }
                           System.out.print(odd+" "+'\r'+"偶数:"+'\r'+even);//从小到大输出所有奇数,然后从小到大输出所有偶数
                        
        }
        
        
}
作者: 菜鸟也疯狂    时间: 2013-12-3 14:04
菜鸟也疯狂 发表于 2013-12-3 11:33
import  java.util.*;
public class OutPut
{

修改满足条件后  还有分数没版主
作者: 迪兰奇迹    时间: 2013-12-3 14:37
姓名:黄聪聪
QQ:1170813299
感受:好强大的Scanner类啊!用io技术整了半天都解决不了的问题,用他几下就解决啦!

distinguishparity.zip

4.87 KB, 阅读权限: 100, 下载次数: 2


作者: 低调的奢华    时间: 2013-12-3 15:59
本帖最后由 低调的奢华 于 2013-12-3 16:04 编辑

就差技术分了,还请版主大人多多可怜!

  1. import java.math.BigDecimal;
  2. import java.util.Map;
  3. import java.util.Scanner;
  4. import java.util.TreeMap;

  5. public class Test {

  6.         /**
  7.          * @param args
  8.          */
  9.         public static void main(String[] args) {
  10.                 // TODO Auto-generated method stub
  11.                 Scanner sc = new Scanner(System.in); // 输入流
  12.                 while (true) {
  13.                         System.out.println("请输入一个2-10000之间的数:");
  14.                         String line = sc.nextLine(); // 记录输入信息
  15.                         try {
  16.                                 int x = Integer.parseInt(line); // 如果输入信息是数字转为int型
  17.                                 if (x >= 2 && x <= 10000) {  //判断数字范围
  18.                                         odevity(x);              //调用odevity方法,将输入的数字传入
  19.                                         break; // 跳出循环
  20.                                 } else {
  21.                                         System.out.println("您输入的数字不符合要求,请输入2-10000之间的数!");
  22.                                 }

  23.                         } catch (Exception e1) {
  24.                                 try {
  25.                                         new BigDecimal(line); // 输入的信息如果能装进BigDecimal做出提示
  26.                                         System.out.println("您输入是小数,请重新输入!");
  27.                                 } catch (Exception e2) { // 非数字
  28.                                         System.out.println("您输入的是一个非数字,请重新输入!");
  29.                                 }
  30.                         }
  31.                 }
  32.                 sc.close(); // 关闭流
  33.         }

  34.         
  35.         //此方法是根据传入的值,生成对应的数列集,并对数列集以键值对的方式存储于map集合中,键为偶数,值为奇数
  36.         //从小到大依次对应
  37.         private static void odevity(int length) {
  38.                 Map<Integer, Integer> map = new TreeMap<Integer, Integer>();   //创建一个Map对象
  39.                 for (int i = 0; i < length; i += 2) {      //往集合里面依次添加元素
  40.                         map.put(i , i + 1);                      //偶数添加至键,奇数添加至值
  41.                         if (length % 2 == 0)                  //偶数长度的值为null
  42.                                 map.put(length , null);
  43.                 }
  44.                 System.out.print("偶数:");                                
  45.                 for (Integer key : map.keySet()) {     //迭代打印键,里面存储的是偶数
  46.                         System.out.print(key + " ");
  47.                 }
  48.                 System.out.println();
  49.                 System.out.print("奇数:");
  50.                 for (Integer key : map.keySet()) {     //迭代打印键,里面存储的是奇数
  51.                         if(map.get(key)!=null)             //判断如果值为null,则不打印
  52.                         System.out.print(map.get(key) + " ");
  53.                 }
  54.         }
  55. }
复制代码

作者: 胡永城    时间: 2013-12-3 16:40
胡永城

胡永城_374795335.rar

2.96 KB, 阅读权限: 100, 下载次数: 1


作者: QQ被盗    时间: 2013-12-3 17:13
QQ被盗 发表于 2013-12-3 11:47
这是我新写的,对输入的带有空格的两个数字和对字符串、范围在2到10000进行了判断

用数组,保存奇偶?这样不是有三个循环了
作者: QQ被盗    时间: 2013-12-3 17:18
我有点明白了,好像数组和集合也可以两个循环输出
作者: mayor125    时间: 2013-12-3 18:59
姓名:黄阳
QQ:121756509

黄阳src.zip

57.74 KB, 阅读权限: 100, 下载次数: 3


作者: 终结者    时间: 2013-12-3 19:34
题目要求用异常处理,没用异常不知道行不行,如果不行,告诉一声,我重写一份用异常处理的程序

activity.zip

5.56 KB, 下载次数: 53


作者: 邀明月    时间: 2013-12-3 19:45
DistinguishOddEven.zip (753 Bytes, 下载次数: 2)

作者: 清风星明    时间: 2013-12-3 21:53
/**
  * 需求:1.输入整型自然数x,且2<= x<=10000,要求先把1到x中的所有奇数从小到大输出,
  * 再把所有的偶数从小到大输出。
  */

package com.study;
import java.io.*;
public class test {
        public static void main(String[] args) {
               
                //定义字符串a
                String a=null;
                //定义输入流
                BufferedReader br=new BufferedReader(new InputStreamReader(System.in));
                System.out.println("请输入数字:");
               
                //异常处理
                try {
                        //得到键盘输入的字符串
                        a=br.readLine();
                        //将得到的字符串转换为int型
                        int n=Integer.parseInt(a);
                        //进行while循环
                        while(true){
                        //如果得到数在区间范围内
                        if(n>=2&&n<=10000)
                        {
                                System.out.println("输入正确!");
                               
                                int b=n/2;
                                System.out.println("输出:");
                                //判断如果是偶数,分别从小到大输出偶数和奇数
                                if((n%2)==0){
                                       
                                        for (int i = 0; i < b; i++) {
                                                int b1=2+i*2;
                                                System.out.print(b1+"、");
                                        }
                                        System.out.println("");
                                        for (int i = 0; i < b; i++) {
                                                int b2=1+i*2;
                                                System.out.print(b2+"、");
                                        }
                                }
                                //如果是奇数,分别从小到大输出偶数和奇数
                                if((n%2)==1){
                                        for (int i = 0; i < b; i++) {
                                                int b1=2+i*2;
                                                System.out.print(b1+"、");
                                        }
                                        System.out.println("");
                                        for (int i = 0; i <= b; i++) {
                                                int b2=1+i*2;
                                                System.out.print(b2+"、");
                                        }
                                }
                               
                        }
                        //如果不在区间范围内,报错,并提示重新输入
                        if (n<=2||n>=10000)
                               
                                System.out.println("输入数字不在范围内,请重新输入!");
                            break;       
                        }
                } catch (IOException e) {
                        // TODO Auto-generated catch block
                        e.printStackTrace();
                }
                finally
                {
                        //再做一次异常处理
                        try {
                                //关闭
                                br.close();
                        } catch (IOException e) {
                                // TODO Auto-generated catch block
                                e.printStackTrace();
                        }
                }
        }

}


作者: qq379264347    时间: 2013-12-3 23:13
本帖最后由 qq379264347 于 2013-12-4 10:53 编辑

我的写好了,请检查……

区别奇偶数.rar

3.64 KB, 下载次数: 57


作者: quan23355    时间: 2013-12-4 01:25
  1. import java.io.*;
  2. public class Test {
  3.         public static void main(String[] args) throws IOException{
  4.                 BufferedReader br=new BufferedReader(new InputStreamReader(System.in));//获取键盘录入加入缓冲区
  5.                 System.out.println("请输入要区分奇偶的整数");
  6.                 String s=br.readLine();//读取行
  7.                 while(!s.matches("[0-9]{1,4}?")&&!s.matches("[1][0]{4}?")||s.matches("[01]")){
  8.                         /*
  9.                          *一次性判断, 只要输入不是2-10000就重新让用户输入
  10.                          *s.matches("[0-9]{1,4}?")匹配1个字符到4个字符,每个字符只能是0-9,即0-9999
  11.                          *s.matches("[1][0]{4}?")匹配10000
  12.                          *s.matches("[01]"匹配0或1
  13.                          * */
  14.                         System.out.println("请输入2到10000的正整数!");
  15.                         s=br.readLine();
  16.                 }
  17.                 fff(Integer.parseInt(s));//先判断再使用Integer.parseInt(s)的原因是用户有可能输入超出int范围的整数,这样程序就挂了。哈哈,现在不管你怎么输入都不会挂咯
  18.         }
  19.         private static void fff(int x) {       
  20.                 StringBuilder sb1=new StringBuilder();//缓冲偶数
  21.                 StringBuilder sb2=new StringBuilder();//缓冲奇数
  22.                 for (int i = 1; i <= x; i++) {
  23.                         if(i%2==0){//如果是偶数
  24.                                 sb1.append(i+" ");//i+" "加入sb1缓冲区
  25.                         }else{
  26.                                 sb2.append(i+" ");//i+" "加入sb2缓冲区
  27.                         }
  28.                 }
  29.                 System.out.println(sb2);//先打印奇数
  30.                 System.out.println(sb1);//打印偶数
  31.         }
  32. }
复制代码

作者: FFF    时间: 2013-12-4 09:18
菜鸟也疯狂 发表于 2013-12-3 14:04
修改满足条件后  还有分数没版主

int num2 = (int)it.next();强转时,应该用Integer封装类
作者: 杨丽静    时间: 2013-12-4 10:10
标题: MyTest2
本帖最后由 杨丽静 于 2013-12-4 10:13 编辑

import java.io.*;
import java.util.*;
/*
* 1,输入整形偶数x,且2<=n<=10000,要求先把1到n中的所有基数从小到大输出,再把所有的偶数从小到大输出
*,2,当用户输入非整形字符时或超出范围时的异常处理。
*
*/
//处理超过10000的异常
class OvertopException extends Exception
{
OvertopException(String message)//定义异常信息  
{
  super(message);//因为父类中已经把异常信息都操作完了
}
}
//处理非整数
class NumberFormatException extends Exception
{
NumberFormatException(String message)//定义异常信息
{
  super(message);//因为父类中已经把异常信息都操作完了
}
}

public class MyTest2
{
public static void main(String[] args) throws IOException,NumberFormatException, OvertopException
{
  String s = in();
  
  //处理异常
  try
  {
   dealWith(s);
  }
  catch(OvertopException e)
  {
   System.out.println(e.toString());
   String s1 = in();
   dealWith(s1);
   
  }
  catch(NumberFormatException ee)
  {
   System.out.println(ee.toString());
   String s2 = in();
   dealWith(s2);
  
  }
}

public static String in()
{
  System.out.println("请输入0到10000的正整数x");
  //在键盘上输入一个整数
  Scanner sc = new Scanner(System.in);
  String s = sc.next();
  return s;
}

public static void dealWith(String s) throws OvertopException, NumberFormatException
{
  //判断字符串中是否有"."
  boolean b = s.contains(".");
  if(b)
   throw new NumberFormatException("输入的数据不是整数!请重新输入");
  
  //将字符串转换成整数
  int x = Integer.parseInt(s);
  if(x > 10000)
   throw new OvertopException("数据超出范围!请重新输入");//手动通过throw关键字抛出一个自定义异常
  else
  {
   //输出打印奇数
   for(int i = 1;i <= x; i++)
   {
     int j = i%2;
     if(j == 1)
      System.out.print(i +" ");   
   }
   System.out.println();
   //输出打印偶数
   for(int i = 1;i <= x; i++)
   {
    int j = i%2;
    if(j == 0)
     System.out.print(i +" ");   
   }
  }
}
}


作者: 杨丽静    时间: 2013-12-4 10:11
import java.io.*;
作者: 。。。。。。。    时间: 2013-12-4 10:12
源代码见附件!

Demo3.zip

1.17 KB, 下载次数: 89


作者: yuqian268    时间: 2013-12-4 10:20
看到自己的技术分才那么点,这样的活动还得多参与,云7加油

oddEven_duxiaowen.zip

1007 Bytes, 阅读权限: 100, 下载次数: 1

区别奇偶数


作者: FFF    时间: 2013-12-4 10:27
quan23355 发表于 2013-12-4 01:25

有bug,输入01时,会输出数据,而不是提示异常、当输入1时,提示异常。bug-1
正则额外+1
共+5技术分!
作者: Rockray    时间: 2013-12-4 10:30
答案提交
TestDemo.zip (656 Bytes, 下载次数: 1)


作者: FFF    时间: 2013-12-4 10:33
杨丽静 发表于 2013-12-4 10:10
import java.io.*;
import java.util.*;
/*

当输入字符时(比较FFF),会抛出异常没有处理。而且。自然数x的范围是2到10000而不是0到10000呢~如果有疑问可以联系我!群里能找到我的QQ等联系方式。
作者: 杨丽静    时间: 2013-12-4 10:44
杨丽静 发表于 2013-12-4 10:10
import java.io.*;
import java.util.*;
/*

异常这块学的不太好,运用的不熟练能不能让我看一看,您点评比较好的,异常处理得比较好的帖子
作者: FFF    时间: 2013-12-4 10:46
本帖最后由 FFF 于 2013-12-4 10:47 编辑
杨丽静 发表于 2013-12-4 10:44
异常这块学的不太好,运用的不熟练能不能让我看一看,您点评比较好的,异常处理得比较好的帖子 ...


有的,到时你再回来看看好了!我会公布所有的答案的。到时你可以看看我加分高的。都是实现得比较好的!
异常处理,不一定要用try与throw。只有你充分考虑到“异常”这种情况,就算是对异常进行了处理!

作者: 秋晨    时间: 2013-12-4 11:08
提交答案,哈哈

奇偶数分离.zip

1.54 KB, 阅读权限: 100, 下载次数: 2


作者: Θ动@咚Θ    时间: 2013-12-5 07:35
本帖最后由 Θ动@咚Θ 于 2013-12-6 08:54 编辑

邢栋 安卓28

邢栋 安卓28期 Jioushuchu.zip

892 Bytes, 阅读权限: 100, 下载次数: 1


作者: FFF    时间: 2013-12-5 09:48
本帖最后由 FFF 于 2013-12-6 09:14 编辑
Θ动@咚Θ 发表于 2013-12-5 07:35
邢栋 安卓28

下次要再细心一点哦~

作者: Θ动@咚Θ    时间: 2013-12-5 10:16
本帖最后由 Θ动@咚Θ 于 2013-12-6 08:50 编辑

版主辛苦了!!!
作者: 秋晨    时间: 2013-12-5 11:34
秋晨 发表于 2013-12-4 11:08
提交答案,哈哈

我的技术分够啦,哈哈,谢谢版主
作者: smileven    时间: 2013-12-6 11:56
import java.util.Scanner;
//自定义一个异常类,用于显示输入的数字不在2~10000范围类的异常。
class YiChang extends Exception{
        //自定义异常了构造函数
        public YiChang(String msg) {
                super(msg);
        }       
}

public class PrintData{
        //主函数
        public static void main(String[] args) {
                //调用shuRu从键盘接收一个数字,并赋值给data。
                int data = 0;
                try {
                        //从键盘接收一个整型数字并复制给data,
                        //如果输入的不是整型nextInt会自动抛出异常。
                        data = new Scanner(System.in).nextInt();
                        //输出1~x的奇数。
                        jiShu(data);
                        //输出0~x的偶数。
                        ouShu(data);
                } catch (Exception e) {
                        //捕获输入的不是整数的这个异常并进行处理。
                        System.out.println("输入的不是整数!");
                }
        }

        public static void jiShu(int data){
                try {
                        //判断输入的整型数字是否在2~10000范围内。
                        if ((data>=2)&&(data<=10000)) {
                                System.out.println("1到"+ data +"范围的奇数有:");
                                //如果整型数组在范围了则打印出1~data范围内的奇数。
                                for (int i = 1; i <= data; i += 2)
                                        System.out.print(i + " ");
                                System.out.println();
                        }
                        else {
                                //如果不在2~10000范围内则抛出自定义的异常。
                                throw new YiChang("输入的数字格式不正确!");
                        }
                } catch (Exception e) {
                        System.out.println("请仔细输入。");
                }
        }
        public static void ouShu(int data){
                try {
                        //判断输入的整型数字是否在2~10000范围内。
                        if ((data>=2)&&(data<=10000)){
                                System.out.println("0到"+ data +"范围的偶数有:");
                                //如果整型数组在范围了则打印出0~data范围内的偶数。
                                for (int i = 0; i <= data; i += 2)
                                        System.out.print(i + " ");
                                System.out.println();
                        }
                        else {
                                //如果不在2~10000范围内则抛出自定义的异常。
                                throw new YiChang("输入的数字格式不正确!");
                        }
                } catch (Exception e) {
                        System.out.println("请仔细输入。");
                }
        }
}



作者: 糖伯貓    时间: 2013-12-6 12:21
  1. /*
  2. 要求:输入整型自然数x,且,要求先把1到x中的所有奇数从小到大输出,再把所有的偶数从小到大输出。

  3. 思路:
  4.         获取字符;
  5. 1,判断输入是否为整数;
  6. 2,判断输入是否符合要求的整数;
  7. 3,遍历整数中的奇数偶数存入各自的StringBuilder;
  8. 4,打印StringBuilder;
  9. */

  10. import java.io.*;
  11. import java.lang.*;
  12. import java.util.*;

  13. class TestDemo
  14. {
  15.         public static void main(String[] args)
  16.         {
  17.                         System.out.println("请输入整数大于2小于10000:");
  18.                         while(true)                                                                                //循环输入
  19.                         {       
  20.                                 try
  21.                                 {
  22.                                         Scanner input = new Scanner(System.in);   //定义一个Scanner对象获取输入字符
  23.                                         int num=input.nextInt();                                //将获取的字符转换为int型;
  24.                                         if(num<=10000 && num>=2)                                //判断是否符合题目要求的数据;
  25.                                         {
  26.                                                 myOutput(num);                                                //调用自己的myOutput输出方法;
  27.                                                 break;
  28.                                         }
  29.                                         else
  30.                                                 System.out.println("请输入大于2小于10000整数!");
  31.                                 }
  32.                                 catch(Exception e)                                                        //捕捉异常,input.nextInt()如果不是整数转换抛出异常;
  33.                                 {
  34.                                         System.out.println("输入不是整数,请重新输入!");
  35.                                 }
  36.                                
  37.                         }

  38.         }
  39.                  

  40.         public static void myOutput(int  num)
  41.         {
  42.                  StringBuilder sb1 = new StringBuilder();                //新建StringBuilder对象 存放偶数
  43.                  StringBuilder sb2 = new StringBuilder();                //新建StringBuilder对象 存放奇数

  44.                  for (int x=0;x<=num ;x++ )                                         //循环判断
  45.                  {
  46.                          if (x%2 == 0)                                                                 //是否为偶数
  47.                          {
  48.                                  sb1.append(x);                                                        //将偶数存入Stringbuilder
  49.                                  sb1.append(" ");               
  50.                          }       
  51.                                 
  52.                          else
  53.                          {       
  54.                                  sb2.append(x);                                                        //将奇数存入StringBuilder
  55.                                  sb2.append(" ");                       
  56.                          }
  57.                  }

  58.                  System.out.println(sb1.toString());                        //打印偶数
  59.                  System.out.println(sb2.toString());                        //打印奇数
  60.         }
  61.        
  62. }
复制代码



作者: 乔_博_文    时间: 2013-12-6 13:50
看到的晚了,希望还来得及吧,马上就要面试,就要开班了,分数还差那么一大截。恳请版主开恩,多加点儿分吧{:soso_e154:}
  1. import java.io.BufferedReader;
  2. import java.io.InputStreamReader;
  3. import java.util.ArrayList;
  4. import java.util.Arrays;
  5. import java.util.List;

  6. /*
  7.   需求:1.输入整型自然数x,且2<= x<=10000,要求先把1到x中的所有奇数从小到大输出,再把所有的偶数从小到大输出。
  8. *            2.要考虑当用户输入非整形字符时或超出范围的的异常处理。
  9. *            3.代码必须有完整的注释。否则0分处理。
  10. *            4.代码尽可能的简单,用高的效率实现最快的速度。(完成时,有加分。未完成、对成绩没有影响)
  11. *            5.完成基本功能,加3分。完成基本功能,有注释,效率高,有5分。(江湖传闻:听说~如果完成得特别优秀者,加10分~~~)
  12. */
  13. public class Distinguish {
  14.        
  15.         //主函数入口
  16.         public static void main(String[] args) {
  17.                 try {
  18.                         firstInput();
  19.                 } catch (Exception e) {
  20.                         e.printStackTrace();
  21.                 }
  22.         }
  23.        
  24.         //接收输入字符转换的数值
  25.         static int num;
  26.        
  27.         //定义第一次输入自然数的方法
  28.         public static void firstInput() throws Exception{
  29.                 System.out.println("请输入要区分奇偶的整数。。。");
  30.                 BufferedReader inputFir = new BufferedReader(new InputStreamReader(System.in));
  31.                
  32.                 String firstGet = inputFir.readLine();
  33.                
  34.                 if(isNumber(firstGet)){                //判断是否是整数
  35.                         if(isLegal(firstGet)){        //判断是否是非法的
  36.                                 sortAndDist(num);
  37.                         }
  38.                         else{
  39.                                 System.out.println("输入值超出设定范围,请重新输入");
  40.                                 firstInput();
  41.                         }
  42.                 }
  43.                 else{
  44.                         secondInput();
  45.                 }
  46.                
  47.         }
  48.        
  49.         //判断输入值是不是整数的方法
  50.         public static boolean isNumber(String get) throws Exception{
  51.                 char[] charArr = get.toCharArray();
  52.                
  53.                 boolean flag = false;
  54.                 for(int i=0; i<charArr.length; i++){
  55.                        
  56.                         flag = !Character.isLetter(charArr[i]);//false
  57.                 }

  58.                 return flag;
  59.         }
  60.        
  61.         //第二次输入方法
  62.         public static void secondInput() throws Exception{
  63.                
  64.                         System.out.println("请输入0-10000的正整数。。。");
  65.                         BufferedReader inputSec = new BufferedReader(new InputStreamReader(System.in));
  66.                         String secondGet = inputSec.readLine();
  67.                        
  68.                                 if(isLegal(secondGet)){        //判断是否是非法的
  69.                                         sortAndDist(num);
  70.                                 }
  71.                                 else{
  72.                                         System.out.println("输入值超出设定范围,请重新输入");
  73.                                         firstInput();
  74.                                 }
  75.         }
  76.        
  77.         //判断输入值是否位于指定区间的方法
  78.         public static boolean isLegal(String get){
  79.                 char[] charArr = get.toCharArray();
  80.                
  81.                
  82.                 for(int i=0; i<charArr.length; i++){
  83.                         if(Character.isDigit(charArr[i]))
  84.                                 num = Integer.parseInt(get);
  85.                 }
  86.                 boolean flag = (num>0 && num<10000);

  87.                 return flag;
  88.         }

  89.        
  90.         //打印结果
  91.         public static void sortAndDist(int num){
  92.                
  93.                 System.out.println(getOdd(num));
  94.                 System.out.println(getEven(num));
  95.                
  96.         }
  97.        
  98.         //取奇数
  99.         public static List<Integer> getOdd(int num){
  100.                 List<Integer> odd = new ArrayList<Integer>();
  101.                
  102.                 for(int i=0; i<=num; i++){
  103.                         int tmp = i;
  104.                         if(tmp%2 != 0){
  105.                                 odd.add(tmp);
  106.                         }
  107.                 }
  108.                 Arrays.sort(odd.toArray());
  109.                 return odd;
  110.         }
  111.        
  112.         //取偶数
  113.         public static List<Integer> getEven(int num){
  114.                 List<Integer> even = new ArrayList<Integer>();
  115.                
  116.                 for(int i=0; i<=num; i++){
  117.                         int tmp = i;
  118.                                 if(tmp%2 == 0){
  119.                                         even.add(tmp);
  120.                                 }
  121.                 }
  122.                 Arrays.sort(even.toArray());
  123.                 return even;
  124.         }
  125.        
  126.        
  127. }
复制代码

作者: 那些人之一    时间: 2013-12-6 14:59
本帖最后由 那些人之一 于 2013-12-6 15:07 编辑
  1. <IMG border=0 alt="" src="http://bbs.itheima.com/forum.php?mod=image&aid=31666&size=300x300&key=16925f1c28ac04de&nocache=yes&type=fixnone" aid="attachimg_31666">/*
  2. 需求:1.输入整型自然数x,且2<=x<=10000,要求先把1到x中的所有奇数
  3. 从小到大输出,再把所有的偶数从小到大输出。
  4. 2.要考虑当用户输入非整型字符时或超出范围的异常处理。
  5. 思考;1.首先要完成输入功能。
  6. 2.要判断是否是整型,是否超出范围
  7. 3.把从0到X的数字进行奇数偶数判断,分别输出
  8. */
  9. import java.util.Scanner;
  10. class Activity
  11. {
  12. public static void main(String[] args)
  13. {
  14. Scanner input=new Scanner(System.in);   System.out.println("please input one mach:");
  15. try
  16. {
  17. // 判断是否为整型,不是就catch
  18. int num=input.nextInt();   //完成输入功能
  19. //完成超出范围,以及输入其他类型的判断与处理
  20. if(num<=2||num>=10000) //判断是否在范围里
  21. {
  22. System.out.println("You input is too big or small");
  23. }
  24. else
  25. {
  26. for (int x=0;x<=num ;x++ ) // 判断奇数偶数分别输出
  27. {
  28. if(x%2==0)
  29. {
  30. System.out.print(" "+x);
  31. }
  32. }
  33. System.out.println();
  34. for (int x=0;x<=num ;x++ )
  35. {
  36. if(x%2!=0)
  37. System.out.print(" "+x);
  38. }
  39. }
  40. }
  41. catch (Exception e) // 如果不是整型 ,输出重新输入
  42. {
  43. System.out.println("please input new ");
  44. }





  45. }
  46. }

  47. PS:第一次参加活动啊  ,毕老师的视频都还没看完就来了,本来是想把功能进行封装,但是担心时间来不及,先发了。
复制代码

360截图20131206145725531.jpg (41.58 KB, 下载次数: 34)

运行结果图

运行结果图

作者: 依旧    时间: 2013-12-6 17:45
版主改作业了

PointTest.rar

1.01 KB, 阅读权限: 100, 下载次数: 4


作者: FFF    时间: 2013-12-6 23:12
乔_博_文 发表于 2013-12-6 13:50
看到的晚了,希望还来得及吧,马上就要面试,就要开班了,分数还差那么一大截。恳请版主开恩,多加点儿分吧 ...

实现基本的功能+5、输入1时,有输出,而不是异常-1、注释太少-1、使用正则+1额外+1
最后得分+4.
作者: FFF    时间: 2013-12-6 23:21
依旧 发表于 2013-12-6 17:45
版主改作业了

完成了基本功能。但因技术已经达到>=25,所以没有任何额外技术++。哈哈哈~~~
作者: FFF    时间: 2013-12-6 23:32
感谢大家的参与。




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2