#鱼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分)
求中奖啊!
{:9_240:} 呃,呃,呃(⊙o⊙)…
人品这么不行啊。。。。
{:9_221:} 小龙_h 发表于 2015-1-27 21:13
求中奖啊!
肯定中啊,壮士这么厉害 我来看看 顶顶 很不错 力挺 顶顶 很不错 力挺 顶顶 很不错 力挺 顶顶 很不错 力挺 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);
}
} 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);
}
}
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);
}
}
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: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);
}*/
}
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();
}
}
}
谢谢!
看到上面的题就想到了当初的C语言考试。。哈哈 我也来拿鱼币啦 围观 半个月内估计不会上论坛,电脑准备大修 本帖最后由 曾经的肆无忌惮 于 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 17:47
学的还是太少了,只做出了这么几题,还有四题的知识点还没自 ...
嗯、我想明白了、是因为最后一次循环的时候i++导致的溢出,所以才会陷入死循环,我改好了