百日维新 发表于 2015-1-27 20:19:15

#鱼C五周年嘉年华# 《JAVA程序设计&改错》# 第二章

本帖最后由 百日维新 于 2015-2-25 02:13 编辑



答题注明题号,提交完整的程序

No11:程序设计,第1个人10岁,第2个比第1个人大2岁,依次递推,请用递归方式计算出第8个人多大? (10分)


No12:程序改错 (10分)
用一天的微妙数除以一天的毫秒数,输出1000
public class Test {

      public static void main(String[] args) {
                final long PER_DAY_US = 24*60*60*1000*1000 ;//微秒
                final long PER_DAY_MS = 24*60*60*1000; //毫秒
                System.out.println(PER_DAY_US/PER_DAY_MS);
      }
}



No13: 程序改错,输出j = 100 (10分)
public class Test {

      public static void main(String[] args) {
                int j = 0;
                for(int i=0 ;i < 100;i++){
                        j = j ++;
                }
                System.out.println("j = "+j);
      }
}

No14:程序改错,输出 count = 101 (10分)
public class Test {
      private final static intend= Integer.MAX_VALUE;
      private final static intstart= Integer.MAX_VALUE - 100;
      
      public static void main(String[] args) {
                        int count = 0;
                        for(int i=start; i <= end ; i++){
                              count ++;
                        }
                        System.out.println(" count = "+ count);
      }

}






No15: 程序设计,输出昨天的当前日期 (10分)



No16: 输出c盘下面的所有目录和文件(就是打开电脑c盘看到的所以东西,不用遍历子目录)(15分)



No17:编写一个程序,将d:\java目录下的所有.java文件复制到d:\jad目录下,并将原来文件的扩展名从.java改为.jad。(15分)

No18: 程序改错,输出word = Pain 或 Gain 或 Main (15分)
import java.util.Random;
public class TestFishc {
      private static Random rdm = new Random();
      public static void main(String[] args) {
                StringBuffer word = null;
               
                switch (rdm.nextInt(3)) {
      
                case 1:
                        
                        word = new StringBuffer('P');
                        
                case 2:
                        
                        word = new StringBuffer('G');
                        
                default:
                        
                        word = new StringBuffer('M');
                        
                }
                word.append('a');
                word.append('i');
                word.append('n');
               
                System.out.println("word = "+word);
      }
}


No19: 编写一个截取字符串的函数,输入为一个字符串和字节数,输出为按字节截取的字符串,但要保
证汉字不被截取半个,如"我ABC",4,应该截取"我AB",输入"我AB汉CDEF",6,应该输出"我
AB",而不是"我ABC+汉的半个"(请说明源文件采用的编码标准,便于判题)。(20分)




No20:程序设计,设计4个线程,两个线程对j减1,另两个线程对j加1(20分)

小龙_h 发表于 2015-1-27 21:13:45

求中奖啊!
{:9_240:}

小龙_h 发表于 2015-1-27 21:14:40

呃,呃,呃(⊙o⊙)…
人品这么不行啊。。。。
{:9_221:}

百日维新 发表于 2015-1-27 21:15:04

小龙_h 发表于 2015-1-27 21:13
求中奖啊!

肯定中啊,壮士这么厉害

freeparty 发表于 2015-1-27 21:32:29

我来看看

8128697 发表于 2015-1-27 21:56:01

顶顶 很不错 力挺   顶顶 很不错 力挺

8128697 发表于 2015-1-27 21:57:00

顶顶 很不错 力挺   顶顶 很不错 力挺

雪是梅之香 发表于 2015-1-28 10:09:10

No12
public class Test {

    public static void main(String[] args) {
            final long PER_DAY_US = (long)24*60*60*1000*1000 ;//微秒
            final long PER_DAY_MS = 24*60*60*1000; //毫秒
            System.out.println(PER_DAY_US/PER_DAY_MS);
    }
}

雪是梅之香 发表于 2015-1-28 10:26:24

No13
public class Test {

public static void main(String[] args) {
      int j = 0;
      for(int i=0 ;i < 100;i++){
                j ++;
      }
      System.out.println("j = "+j);
}
}


No11
public class P2_11 {
        public static void main(String[] args) {
      int age1;
      age1=age(8);
      System.out.println("第8个人的年龄是:"+age1);
        }
        static int age(int num){
                if(num==1){
                        return 10;
                }else{
                        return age(num-1)+2;
                }
        }
}
No14
public class Test {
      private final static intend= Integer.MAX_VALUE;
      private final static intstart= Integer.MAX_VALUE - 100;
      
      public static void main(String[] args) {
                        int count = 0;
                        for(long i=start; i <= end ; i++){
                              count ++;
                        }
                        System.out.println(" count = "+ count);
      }

}


雪是梅之香 发表于 2015-1-28 10:40:44

No18
import java.util.Random;
public class TestFishc {
      private static Random rdm = new Random();
      public static void main(String[] args) {
                StringBuffer word = null;
            
             switch (rdm.nextInt(3)) {
   
             case 1:
                     
                     word = new StringBuffer("P");
                     break;
                     
             case 2:
                     
                     word = new StringBuffer("G");
                     break;
                     
             default:
                     
                     word = new StringBuffer("M");
                     break;
                     
             }
             word.append('a');
             word.append('i');
             word.append('n');
            
             System.out.println("word = "+word);
      }
}


雪是梅之香 发表于 2015-1-28 10:56:15

No15
import java.text.SimpleDateFormat;
import java.util.*;
public class P2_15 {
      public static void main(String[] args) {
              SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");
              Calendar c = Calendar.getInstance();   
              int d = c.get(Calendar.DAY_OF_MONTH);
              --d;                                 
              c.set(Calendar.DAY_OF_MONTH, d);      
              System.out.println(df.format(c.getTime()));   
      }
}


小龙_h 发表于 2015-1-28 11:05:55

本帖最后由 小龙_h 于 2015-1-28 11:09 编辑

第一版写好了,求审判,哪里写的不好我再改。{:9_240:}
package com.xl.fichc.fiveAnniversary;

import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.UnsupportedEncodingException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Random;
import java.util.Scanner;

public class FiveAnniversaryTest2 {

      /**
         * @param args
         * @author xiaolong
         */
      
//      No11:程序设计,第1个人10岁,第2个比第1个人大2岁,依次递推,请用递归方式计算出第8个人多大? (10分)
      
      public static void main(String[] args) {
                System.out.println("第8个人"+age(8)+"岁啦!");
      }
      public static int age(int n){
                if(n==1){
                        return 10;
                }
                return age(n-1) + 2;
      }
      
//      No12:程序改错 (10分)用一天的微妙数除以一天的毫秒数,输出1000
      
    /*public static void main(String[] args) {
      final long PER_DAY_US = 24*60*60*1000*1000L ;//微秒
      final long PER_DAY_MS = 24*60*60*1000L; //毫秒
      System.out.println(PER_DAY_US/PER_DAY_MS);
    }*/
   
//      No13: 程序改错,输出j = 100 (10分)
    /*public static void main(String[] args) {
      int j = 0;
      for(int i=0 ;i < 100;i++){
                j++;
      }
      System.out.println("j = "+j);
    }*/

//      No14:程序改错,输出 count = 101 (10分)
   /* private final static intend= Integer.MAX_VALUE;
    private final static intstart= Integer.MAX_VALUE - 100;
    public static void main(String[] args) {
      int count = 0;
      for(long i=start; i <= end ; i++){
                count ++;
      }
      System.out.println(" count = "+ count);
    }*/

//      No15: 程序设计,输出昨天的当前日期 (10分)
      /*public static void main(String[] args) {
                Date date = new Date();
                long time = date.getTime()-24*60*60*1000;
                Date result = new Date(time);
                SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
                System.out.println(sdf.format(result));
      }*/


//      No16: 输出c盘下面的所有目录和文件(就是打开电脑c盘看到的所以东西,不用遍历子目录)(15分)
      /*public static void main(String[] args) {
                File root = new File("c:\\");
                File[] list = root.listFiles();
                for(File file:list){
                        System.out.println(file.getName());
                }
      }*/


//      No17:编写一个程序,将d:\java目录下的所有.java文件复制到d:\jad目录下,并将原来文件的扩展名从.java改为.jad。(15分)
      /*public static void main(String[] args) {
                File sourRoot = new File("d:\\java\\");
                File destRoot = new File("d:\\jad\\");
                if(!sourRoot.exists())
                        System.out.println("您的目录"+sourRoot.getPath()+"\\不存在");
                else{
                        if(!destRoot.exists()) destRoot.mkdirs();
                        File[] fileList = sourRoot.listFiles();
                        String filename = "";
                        if(fileList.length==0) System.out.println(sourRoot.getPath()+"\\目录中没有.java文件");
                        for(File file : fileList){
                              if(file.getName().endsWith(".java")){
                                        filename = file.getName().substring(0, file.getName().lastIndexOf("."));
                                        copy(file.getPath(),destRoot.getPath()+"\\"+filename+".jad");
                              }
                        }
                }
      }
      public static void copy(String sourPath,String destPath){
                try {
                        FileInputStream fis = new FileInputStream(sourPath);
                        FileOutputStream fos = new FileOutputStream(destPath);
                        byte[] buf = new byte;
                        int temp = 0;
                        while((temp=fis.read(buf))!=-1){
                              fos.write(buf, 0, temp);
                        }
                        fos.flush();
                        fis.close();
                        fos.close();
                } catch (Exception e) {
                        e.printStackTrace();
                }
                System.out.println("复制文件"+sourPath+" ---> "+destPath+"成功!");
      }*/
      
//      No18: 程序改错,输出word = Pain 或 Gain 或 Main (15分)
    /*private static Random rdm = new Random();
    public static void main(String[] args) {
      StringBuffer word = null;
      switch (rdm.nextInt(3)) {
      case 1:
            word = new StringBuffer("P");
            break;
      case 2:
            word = new StringBuffer("G");
            break;
      default:
            word = new StringBuffer("M");
      }
      word.append('a');
      word.append('i');
      word.append('n');
      System.out.println("word = "+word);
    }*/

//      No19: 编写一个截取字符串的函数,输入为一个字符串和字节数,输出为按字节截取的字符串,但要保
//      证汉字不被截取半个,如"我ABC",4,应该截取"我AB",输入"我AB汉CDEF",6,应该输出"我
//      AB",而不是"我ABC+汉的半个"(请说明源文件采用的编码标准,便于判题)。(20分)
      //      编码格式默认的是Unicode编码么?我木有改过啊。。。
      /*public static void main(String[] args) {
                System.out.print("请输入字符串:");
                Scanner scanner = new Scanner(System.in);
                byte[] str = scanner.nextLine().getBytes();
                System.out.print("请输入字节数:");
                byte[] temp = new byte;
                for(int i=0;i<temp.length;i++){
                        temp=str;
                }
                if(temp.length>1){
                        if(temp>0&&temp<0)
                              temp=0;
                }else{
                        temp=0;
                }
                try {
                        System.out.println(new String(temp,"GBK"));
                } catch (UnsupportedEncodingException e) {
                        e.printStackTrace();
                }
      }*/

//      No20:程序设计,设计4个线程,两个线程对j减1,另两个线程对j加1(20分)
      /*private static int j=0;
      public static void main(String[] args) {
                for(int i=0;i<2;i++){
                        new Thread(){
                              public void run(){
                                        add();
                              }
                        }.start();
                        new Thread(){
                              public void run(){
                                        sub();
                              }
                        }.start();
                }
      }
      public synchronized static void add(){
                j++;
                System.out.println("线程"+Thread.currentThread().getId()+"调用add()方法,j的值为:"+j);
      }
      public synchronized static void sub(){
                j--;
                System.out.println("线程"+Thread.currentThread().getId()+"调用sub()方法,j的值为:"+j);
      }*/

}

wwwxinyu1990 发表于 2015-1-28 16:10:11

No1:
/**
* 程序设计,第1个人10岁,第2个比第1个人大2岁,依次递推,请用递归方式计算出第8个人多大?
* @author wwwxinyu1990
*
*/
public class Age {
        public static void main(String[] args) {
                System.out.println(getAge(8));
        }
       
        protected static int getAge(int curNum) {
                if (curNum == 1) {
            return 10;
      } else {
            return getAge(curNum - 1) + 2;
      }
               
        }
}No2:
/**
* 程序改错:用一天的微妙数除以一天的毫秒数,输出1000
* @author wwwxinyu1990
*
*/
public class Test {
    public static void main(String[] args) {
      final long PER_DAY_US = 24*60*60*1000*1000L ;//微秒
      final long PER_DAY_MS = 24*60*60*1000L; //毫秒
      System.out.println(PER_DAY_US/PER_DAY_MS);
    }
}
No3:
/**
* 程序改错:输出j = 100
* @author wwwxinyu1990
*
*/
public class Test {
    public static void main(String[] args) {
      int j = 0;
      for(int i=0 ;i < 100; i++){
              // 第一种方法:
//                j = ++j;
              // 第二种方法:
              j++;
      }
      System.out.println("j = " + j);
    }
}
No4:
/**
* 程序改错:输出 count = 101
* @author wwwxinyu1990
*
*/
public class Test {
    private final static intend= Integer.MAX_VALUE;
    private final static intstart= Integer.MAX_VALUE - 100;
   
    public static void main(String[] args) {
          int count = 0;
          for(long i=start; i <= end ; i++){
                  count ++;
          }
          System.out.println(" count = "+ count);
    }
}
No5:import java.util.Calendar;

/**
* 程序设计:输出昨天的当前日期
* @author wwwxinyu1990
*
*/
public class Yesterday {
        public static void main(String[] args) {
                Calendar calendar = Calendar.getInstance();
                calendar.add(Calendar.DATE, -1);
                System.out.println(calendar.getTime());
        }
}

No6:
import java.io.File;

/**
* 输出c盘下面的所有目录和文件(就是打开电脑c盘看到的所以东西,不用遍历子目录)
* @author wwwxinyu1990
*
*/
public class ViewFile {
        public static void main(String[] args) {
                File file = new File("C:" + File.separatorChar);
                if (file.exists()) {
                        File[] files = file.listFiles();
                        for (File fe : files) {
                                System.out.println(fe.getName());
                        }
                }
        }
}
No7:
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.FilenameFilter;

/**
* 编写一个程序,将d:\java目录下的所有.java文件复制到d:\jad目录下,
*              并将原来文件的扩展名从.java改为.jad。
* @author wwwxinyu1990
*
*/
public class FileCopy {
        public static void main(String[] args) {
                // 拷贝元路径
                String metaDir = "D:" + File.separator + "java" + File.separator;
                // 目标路径
                String targetDir = "D:" + File.separator + "jad" + File.separator;
                // 拷贝
                copyAllFile(metaDir, targetDir);
        }
       
        /**
       * 将oldPath路径下的java文件拷贝到newPath路径下,并将扩展名java改为jad。
       * @param oldPath 元文件路径
       * @param newPath 目标文件路径
       */
        public static void copyAllFile(String oldPath, String newPath) {
                try {
                        (new File(newPath)).mkdirs(); //如果文件夹不存在 则建立新文件夹
                        File oldFiles = new File(oldPath);
                        // 获取元文件目录下的所有java文件的文件名
                        String[] files = oldFiles.list(
                                        new FilenameFilter() {
                                                public boolean accept(File dir, String name) {
                                                        if (name.endsWith(".java")) {
                                                                return true;
                                                        }
                                                        return false;
                                                }
                                        });
                        File temp=null;

                        for (int i = 0; i < files.length; i++) {
                                if(oldPath.endsWith(File.separator)){
                                        temp=new File(oldPath+files);
                                } else{
                                        temp=new File(oldPath+File.separator+files);
                                }

                                if(temp.isFile()){
                                        // 拷贝文件的输入流
                                        FileInputStream input = new FileInputStream(temp);
                                        // 新文件路径
                                        String newFilePath = null;
                                        if(newPath.endsWith(File.separator)){
                                                newFilePath = newPath+temp.getName().replace("java", "jad");
                                        } else{
                                                newFilePath = newPath+File.separator+temp.getName().replace("java", "jad");
                                        }
                                        // 文件的输出流
                                        FileOutputStream output = new FileOutputStream(newFilePath);
                                        byte[] b = new byte;
                                        int len;
                                        while ( (len = input.read(b)) != -1) {
                                                output.write(b, 0, len);
                                        }
                                        output.flush();

                                        // 关闭输出文件流
                                        if (output !=null) {
                                                output.close();
                                        }

                                        // 关闭输入文件流
                                        if (input != null) {
                                                input.close();
                                        }
                                }
                        }
                } catch (Exception e) {
                        System.out.println("复制整个文件夹内容操作出错");
                        e.printStackTrace();
                }
        }
}
No8:
import java.util.Random;

/**
* 程序改错:输出word = Pain 或 Gain 或 Main
* @author wwwxinyu1990
*
*/
public class TestFishc {
    private static Random rdm = new Random();
    public static void main(String[] args) {
      StringBuffer word = null;
      
      switch (rdm.nextInt(3)) {
      case 1:
                word = new StringBuffer("P");
                break;
      case 2:
                word = new StringBuffer("G");
                break;
      default:
                word = new StringBuffer("M");
                break;
      }
      word.append('a');
      word.append('i');
      word.append('n');
      
      System.out.println("word = " + word);
    }
}
No9:
/**
* 编写一个截取字符串的函数,输入为一个字符串和字节数,输出为按字节截取的字符串,但要保
        证汉字不被截取半个,如"我ABC",4,应该截取"我AB",输入"我AB汉CDEF",6,应该输出"我AB",
        而不是"我ABC+汉的半个"(请说明源文件采用的编码标准,便于判题)。
        编码 : GBK
* @author wwwxinyu1990
*/
public class TruncateString {

        public static void main(String[] args) {
                spltString("我ABC", 4);
                spltString("我AB汉CDEF", 6);
                spltString("DEF加油EFG", 6);
        }
       
        public static void spltString(String src, int length) {
                if (src == null || src.length() < 1) {
                        System.out.println("要截取的字符串是空的,请重新指定。");
                        return;
                }
               
                if (length > src.length()) {
                        length = src.length();
                }
               
                byte[] srcBytes = src.getBytes();
                String subStr = "";
                if (srcBytes < 1) {
                        subStr = new String(srcBytes, 0, --length);
                        System.out.println("截取的字符串是:" + subStr);
                } else {
                        subStr = new String(srcBytes, 0, length);
                        System.out.println("截取的字符串是:" + subStr);
                }
               
        }
}
No10:
public class ThreadTest {
        // 采用 Runnable 接口方式创建的多条线程可以共享实例属性
        private int j;

        // 同步增加方法   
        private synchronized void inc() {
                j++;
                System. out .println(Thread.currentThread().getName()+ "--increase--" + j);
        }
       
        // 同步减算方法   
        private synchronized void dec() {
                j--;
                System. out .println(Thread.currentThread().getName()+ "--decrease--" + j);
        }
       
        // 增加线程   
        class Inc implements Runnable {
                public void run() {
                        for (int i = 0; i < 10; i++) {
                                inc();
                        }
                }
        }

        // 减算线程   
        class Dec implements Runnable{
                public void run() {
                        for (int i = 0; i < 10; i++) {
                                dec();
                        }
                }
        }
       
        public static void main(String[] args) {
                ThreadTest t = new ThreadTest();
               
                // 内部类的实例化
                Inc inc = t. new Inc();
                Dec dec = t. new Dec();
               
                // 创建 2*n 个线程 此处 n=2
                for ( int i = 0; i < 2; i++) {
                        new Thread(inc).start();
                        new Thread(dec).start();
                }
               
        }
}
谢谢!

☆﹎尐の潴猪 发表于 2015-1-28 19:48:18

看到上面的题就想到了当初的C语言考试。。哈哈

wenjun8888 发表于 2015-1-28 20:05:49

我也来拿鱼币啦

python001 发表于 2015-1-29 09:51:30

围观

hacker.jin 发表于 2015-1-29 11:53:27

半个月内估计不会上论坛,电脑准备大修

蚯蚓翔龙 发表于 2015-1-30 14:24:39

曾经的肆无忌惮 发表于 2015-1-30 17:47:29

本帖最后由 曾经的肆无忌惮 于 2015-1-30 21:15 编辑

/*
No11:程序设计,第1个人10岁,第2个比第1个人大2岁,依次递推,请用递归方式计算出第8个人多大?
*/

class YearTest{
      public static void main(String[] args) {
                System.out.println("第八个人岁数为:"+year(8));
      }

      public static int year(int n){
                if (n == 1) {
                        return 10;
                }
                else {
                        return 2 + year(--n);
                }
      }
}

/*
No12:程序改错
*/

public class Test {

         public static void main(String[] args) {
                final String PER_DAY_US = 24*60*60*1000*1000;//微秒
                final String PER_DAY_MS = 24*60*60*1000; //毫秒
                System.out.println(PER_DAY_US);
                System.out.println(PER_DAY_MS);
                System.out.println(PER_DAY_US/PER_DAY_MS);
         }
}

/*
No13: 程序改错,输出j = 100
*/

public class Test {

         public static void main(String[] args) {
               int j = 0;
               for(int i=0 ;i < 100;i++){
                         j = ++j ;
               }
               System.out.println("j = "+j);
         }
}

/*
No14:程序改错,输出 count = 101
*/

public class Test {
         private final static intend= Integer.MAX_VALUE;
         private final static intstart= Integer.MAX_VALUE - 100;
         
         public static void main(String[] args) {
                         int count = 0;
                         for(int i=start - 1; i < end ; i++){
                                 count ++;
                         }
                         System.out.println(" count = "+ count);
         }

}

/*
No15: 程序设计,输出昨天的当前日期
*/

import java.util.*;

class Date{
      public static void main(String[] args) {
                int year,month,day;
                Calendar cal=Calendar.getInstance();
                year=cal.get(Calendar.YEAR);
                month=cal.get(Calendar.MONTH);
                day=cal.get(Calendar.DATE);
                System.out.println("昨天是"+year+"年"+(++month)+"月"+(--day)+"日");
      }
}

<p>/*
No18: 程序改错,输出word = Pain 或 Gain 或 Main
*/</p><p>import java.util.Random;
public class TestFishc {
         private static Random rdm = new Random();
         public static void main(String[] args) {
               StringBuffer word = null;
               
               switch (rdm.nextInt(3)) {
         
               case 1:
                        
                         word = new StringBuffer("P");break;
                        
               case 2:
                        
                         word = new StringBuffer("G");break;
                        
               default:
                        
                         word = new StringBuffer("M");
                        
               }
               word.append('a');
               word.append('i');
               word.append('n');
               
               System.out.println("word = "+word);
         }
}
</p>


{:9_220:}{:9_220:}学的还是太少了,只做出了这么几题,还有四题的知识点还没自学到、、、

曾经的肆无忌惮 发表于 2015-1-30 21:16:25

曾经的肆无忌惮 发表于 2015-1-30 17:47
学的还是太少了,只做出了这么几题,还有四题的知识点还没自 ...

嗯、我想明白了、是因为最后一次循环的时候i++导致的溢出,所以才会陷入死循环,我改好了
页: [1] 2 3
查看完整版本: #鱼C五周年嘉年华# 《JAVA程序设计&改错》# 第二章