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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© FFF   /  2013-12-2 15:55  /  5648 人查看  /  58 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 菜鸟也疯狂 于 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+" ");         // 将得到的偶数打印
                                }
                    }        
        }
}

评分

参与人数 1技术分 +1 收起 理由
FFF + 1 没有限定自然数范围。没有输入字符时的处理.

查看全部评分

回复 使用道具 举报

这是我新写的,对输入的带有空格的两个数字和对字符串、范围在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. }
复制代码









评分

参与人数 1黑马币 +3 收起 理由
FFF + 3 亲,可以试试用集合或者数组。会简单一点.

查看全部评分

回复 使用道具 举报
版主辛苦了!

test--梁程峰.zip

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

评分

参与人数 1技术分 +6 收起 理由
FFF + 6 完成基本功能+5,思路+1.但还是有可以改进的.

查看全部评分

回复 使用道具 举报
做个有理想的人 发表于 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);//从小到大输出所有奇数,然后从小到大输出所有偶数
                        
        }
        
        
}

评分

参与人数 1黑马币 +1 收起 理由
FFF + 1 现在是异常处理没做好了!- -# 下次活动再.

查看全部评分

回复 使用道具 举报
菜鸟也疯狂 发表于 2013-12-3 11:33
import  java.util.*;
public class OutPut
{

修改满足条件后  还有分数没版主

评分

参与人数 1黑马币 +1 收起 理由
FFF + 1 亲,只能回答一次呢~

查看全部评分

回复 使用道具 举报
姓名:黄聪聪
QQ:1170813299
感受:好强大的Scanner类啊!用io技术整了半天都解决不了的问题,用他几下就解决啦!

distinguishparity.zip

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

评分

参与人数 1技术分 +1 收起 理由
FFF + 1 未能实现功能。有语法错误!没有人机交互。.

查看全部评分

回复 使用道具 举报
本帖最后由 低调的奢华 于 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. }
复制代码

评分

参与人数 1技术分 +4 收起 理由
FFF + 4 实现功能。但代码太长。简单问题复杂化了!.

查看全部评分

回复 使用道具 举报
胡永城

胡永城_374795335.rar

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

评分

参与人数 1技术分 +8 收起 理由
FFF + 8 实现功能。+5、有亮点额外+3、很给力!.

查看全部评分

回复 使用道具 举报
QQ被盗 发表于 2013-12-3 11:47
这是我新写的,对输入的带有空格的两个数字和对字符串、范围在2到10000进行了判断

用数组,保存奇偶?这样不是有三个循环了
回复 使用道具 举报
我有点明白了,好像数组和集合也可以两个循环输出
回复 使用道具 举报
姓名:黄阳
QQ:121756509

黄阳src.zip

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

评分

参与人数 1技术分 +5 收起 理由
FFF + 5 实现得很好。但分分太高~木有额外++.

查看全部评分

回复 使用道具 举报
题目要求用异常处理,没用异常不知道行不行,如果不行,告诉一声,我重写一份用异常处理的程序

activity.zip

5.56 KB, 下载次数: 53

评分

参与人数 1技术分 +6 收起 理由
FFF + 6 完成功能+5,正则额外+1.

查看全部评分

回复 使用道具 举报
DistinguishOddEven.zip (753 Bytes, 下载次数: 2)

评分

参与人数 1技术分 +4 收起 理由
FFF + 4 x范围设定错误-2、For循环巧妙+1.

查看全部评分

回复 使用道具 举报
/**
  * 需求: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();
                        }
                }
        }

}

评分

参与人数 1技术分 +1 收起 理由
FFF + 1 代码过长,异常处理混乱。

查看全部评分

回复 使用道具 举报
本帖最后由 qq379264347 于 2013-12-4 10:53 编辑

我的写好了,请检查……

区别奇偶数.rar

3.64 KB, 下载次数: 57

评分

参与人数 1技术分 +5 收起 理由
FFF + 5 实现基本功能+5,但程序还可以再简单直接一.

查看全部评分

回复 使用道具 举报
  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. }
复制代码

评分

参与人数 1技术分 +5 收起 理由
FFF + 5 完成基本功能。详细评价请看回复。.

查看全部评分

回复 使用道具 举报
FFF 金牌黑马 2013-12-4 09:18:13
37#
菜鸟也疯狂 发表于 2013-12-3 14:04
修改满足条件后  还有分数没版主

int num2 = (int)it.next();强转时,应该用Integer封装类
回复 使用道具 举报

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 +" ");   
   }
  }
}
}

评分

参与人数 1技术分 +3 收起 理由
FFF + 3 实现基本功能。但异常没有处理好呢~.

查看全部评分

回复 使用道具 举报
import java.io.*;
回复 使用道具 举报
源代码见附件!

Demo3.zip

1.17 KB, 下载次数: 89

评分

参与人数 1技术分 +5 收起 理由
FFF + 5 完成基本功能+5

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马