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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 电玩   /  2013-4-19 22:32  /  8213 人查看  /  112 人回复  /   1 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 电玩 于 2013-4-29 22:51 编辑

3.10(游戏:加法测验)程序清单3-4随机产生一个减法。修改这个程序,随机产生一个计算两个小于100的整数的加法问题。

import java.util.Scanner;
class AdditionTest10 //加法测验
{
public static void main(String[] args)
{
        int number1=(int)(Math.random()*100);//取随机数(10到90之间的整数)
  int number2=(int)(Math.random()*100);

        System.out.print("What is "+number1+" + "+number2+" ? ");//请用户输入答案
        Scanner input=new Scanner(System.in);
        int answer=input.nextInt();
   
   if (number1+number2==answer)   //给答案判断
  {
           System.out.println("你答对了!");
  }else {
  System.out.println("你答错了!\n"+number1+" + "+number2+" = "+(number1+number2) );
  }
        }
}
/*
What is 80 + 57 ? 147
你答错了!
80 + 57 = 137
What is 22 + 71 ? 93
你答对了!
*/
回复 使用道具 举报
本帖最后由 电玩 于 2013-4-30 10:10 编辑

3.11(给出一个月的总天数)编写程序,提示用户输入月份和年份,然后显示这个月的天数。
例如:如果用户输入的月份是2而年份是2000.那么程序应该显示 2000年2月有29天。
如果用户输入的月份为3 而年份为2005天,那么程序就应该显示 2005年3月有31天。

import java.util.Scanner;
class TotalOfDaysInMonth11 //给出一个月的总天数
{
public static void main(String[] args)
{
  Scanner input=new Scanner(System.in);
  System.out.print("请您输入年份: ");
  int year=input.nextInt();
  System.out.print("请您输入月份: ");
  int month=input.nextInt();
int day=0;
  boolean isLeapYear=(year%4==0 && year%100 !=0)||(year%400==0);//将定义用逻辑运算符实现是否是闰年
        
  if(isLeapYear){
  switch(month){
  case 1: day=31;
         break;
     case 2: day=29;
         break;
     
    case 3: day=31;
         break;
   case 4: day=30;
         break;
     case 5: day=31;
         break;
    case 6: day=30;
         break;
   case 7: day=31;
         break;
     case 8: day=31;
         break;
    case 9: day=30;
         break;
   case 10: day=31;
         break;
     case 11: day=30;
         break;
    case 12: day=31;
         break;
      }
}else{
  switch(month){
  case 1: day=31;
         break;
     case 2: day=28;
         break;
     
    case 3: day=31;
         break;
   case 4: day=30;
         break;
     case 5: day=31;
         break;
    case 6: day=30;
         break;
   case 7: day=31;
         break;
     case 8: day=31;
         break;
    case 9: day=30;
         break;
   case 10: day=31;
         break;
     case 11: day=30;
         break;
    case 12: day=31;
         break;
      
      }
      
      }
  
  
  
  
  System.out.println(year+"年"+month+"月有"+ day+"天。");
  
}
}
/*
请您输入年份: 2000
请您输入月份: 2
2000年2月有29天。
请您输入年份: 2005
请您输入月份: 3
2005年3月有31天。
*/
回复 使用道具 举报
Sword 金牌黑马 2013-4-30 10:28:24
63#
额,这是要干什么?代码最好试着自己写,狂敲代码的同时更重要的是思考
回复 使用道具 举报
Sword 发表于 2013-4-30 10:28
额,这是要干什么?代码最好试着自己写,狂敲代码的同时更重要的是思考

谢谢!
不过这里的代码差不多都是我自己写的,不是照着答案无思考的敲的。
否则,我也不会20分钟才做出一道题,1个小时只能最多做4道而已。





回复 使用道具 举报
本帖最后由 电玩 于 2013-4-30 22:32 编辑

3.12(检测数字)编写程序,提示用户输入一个整数,然后判断这个整数是否能被5和6整除,或者不能被它们中的任何一个整除,或者只能被其中一个整除。

import java.util.Scanner;
class  TestBooleanOperators12  //检测数字
{
public static void main(String[] args)
{
  Scanner input=new Scanner(System.in);
  System.out.print("请输入一个整数:");
  int number =input.nextInt();
if (number%5==0 && number%6==0)
{
System.out.println(number+"能被5和6整除");
}
else if (number%5==0 || number%6==0)
{
System.out.println(number+"能被5或6整除");
}else
System.out.println(number+"不能被5和6任何一个数整除");
}
}
/*
请输入一个整数:10
10能被5或6整除
请输入一个整数:30
30能被5和6整除
请输入一个整数:23
23不能被5和6任何一个数整除
*/

回复 使用道具 举报
本帖最后由 电玩 于 2013-4-30 22:38 编辑

3.13(财务应用程序:计算税款)程序清单3-6给出计算单身登记人税款的源代码。整个程序清单3-6,给出的就是完整的源代码。


import java.util.Scanner;
class  ComputeTax13  //计算税款  完整版
{
public static void main(String[] args)
{
  Scanner input=new Scanner(System.in);
  System.out.print("(0表示单身纳税人,1表示已婚共同纳税人或证实的鳏寡,\n"+
   "2表示已婚单独纳税人,3表示家庭户主纳税人)"+
   "请输入您的报税身份: ");
  int status=input.nextInt();//接收数字,确定身份
       System.out.print("请输入您的收入:");
    double income=input.nextDouble();
    double tax=0;
    if(status==0){  //计算单身纳税人
    if(income<=8350)
     tax=income*0.10;
    else if(income<=33950)
     tax=8350*0.10+(income-8350)*0.15;
    else if(income<=82250)
     tax=8350*0.10+(33950-8350)*0.15+(income-33950)*0.25;
    else if(income<=171550)
     tax=8350*0.10+(33950-8350)*0.15+(82250-33950)*0.25+(income-82250)*0.28;
    else if(income<=372950)
   tax=8350*0.10+(33950-8350)*0.15+(82250-33950)*0.25+(171550-82250)*0.28+(income-171550)*0.33;
    else
tax=8350*0.10+(33950-8350)*0.15+(82250-33950)*0.25+(171550-82250)*0.28+(372950-171550)*0.33+(income-372950)*0.35;
    }
    else if(status==1){//计算已婚共同纳税人或证实的鳏寡
     if(income<=16700)
     tax=income*0.10;
    else if(income<=67900)
     tax=16700*0.10+(income-16700)*0.15;
    else if(income<=137050)
     tax=16700*0.10+(67900-16700)*0.15+(income-67900)*0.25;
    else if(income<=208850)
     tax=16700*0.10+(67900-16700)*0.15+(137050-67900)*0.25+(income-137050)*0.28;
    else if(income<=372950)
   tax=16700*0.10+(67900-16700)*0.15+(137050-67900)*0.25+(208850-137050)*0.28+(income-208850)*0.33;
    else
tax=16700*0.10+(67900-16700)*0.15+(137050-67900)*0.25+(208850-137050)*0.28+(372950-208850)*0.33+(income-372950)*0.35;
   
    }
    else if(status==2){//计算已婚单独纳税人
if(income<=8350)
     tax=income*0.10;
    else if(income<=33950)
     tax=8350*0.10+(income-8350)*0.15;
    else if(income<=68525)
     tax=8350*0.10+(33950-8350)*0.15+(income-33950)*0.25;
    else if(income<=104425)
     tax=8350*0.10+(33950-8350)*0.15+(68525-33950)*0.25+(income-68525)*0.28;
    else if(income<=186475)
   tax=8350*0.10+(33950-8350)*0.15+(68525-33950)*0.25+(104425-68525)*0.28+(income-104425)*0.33;
    else
tax=8350*0.10+(33950-8350)*0.15+(68525-33950)*0.25+(104425-68525)*0.28+(186475-104425)*0.33+(income-186475)*0.35;   
   
   
    }
    else if(status==3){//计算家庭户主纳税人
if(income<=11950)
     tax=income*0.10;
    else if(income<=45500)
     tax=11950*0.10+(income-11950)*0.15;
    else if(income<=117450)
     tax=11950*0.10+(45500-11950)*0.15+(income-45500)*0.25;
    else if(income<=190200)
     tax=11950*0.10+(45500-11950)*0.15+(117450-45500)*0.25+(income-117450)*0.28;
    else if(income<=372950)
   tax=11950*0.10+(45500-11950)*0.15+(117450-45500)*0.25+(190200-117450)*0.28+(income-171550)*0.33;
    else
tax=11950*0.10+(45500-11950)*0.15+(117450-45500)*0.25+(190200-117450)*0.28+(372950-171550)*0.33+(income-372950)*0.35;   
   
   
    }
    else{
    System.out.println("错误:无效状态");
    System.exit(0);
    }
    System.out.println("应付税款是 "+(int)(tax*100)/100.0);
}
}
/*
(0表示单身纳税人,1表示已婚共同纳税人或证实的鳏寡,
2表示已婚单独纳税人,3表示家庭户主纳税人)请输入您的报税身份: 0
请输入您的收入:400000
应付税款是 117683.5
*/
回复 使用道具 举报
本帖最后由 电玩 于 2013-4-30 22:59 编辑

3.14(游戏:猜硬币的正反面)编写程序,让用户猜一猜是硬币的正面还是反面。这个程序随机产生一个整数0或者1,它们分别表示硬币的正面和反面。
程序提示用户输入一个猜测值,然后报告这个猜测值是正确的还是错误的。

import java.util.Scanner;
class  GuessSidesOfCoin14 //猜一猜硬币的正反面
{
public static void main(String[] args)
{
int number=(int)(Math.random()*10)%2;//随机生成一个硬币的正反数
  Scanner input=new Scanner(System.in);
  System.out.print("请猜一猜硬币的正反面(0表示正面,1表示反面):  ");
  int guess =input.nextInt();

  if (guess==number)
  {
   System.out.println("恭喜您,猜对了!");
  }else
  System.out.println("很遗憾,您猜错了!");
}
}
/*
请猜一猜硬币的正反面(0表示正面,1表示反面):  0
很遗憾,您猜错了!
*/
回复 使用道具 举报
本帖最后由 电玩 于 2013-4-30 23:19 编辑

3.15(游戏:彩票)修改程序清单3-9,产生三位整数的彩票。程序提示用户输入一个三位整数,然后依照下面的规则判定用户是否赢得奖金:
(1)如果用户输入的所有数匹配彩票的确切顺序,奖金是10000美金。
(2)如果用户输入的所有数匹配彩票的所有数字,奖金是3000美金。
(3)如果用户输入的其中一个数匹配彩票号码中的一个数,奖金是1000美金。

import java.util.Scanner;
class  LotteryTicket15 //彩票 这道题是清单3-9的加强版
{
public static void main(String[] args)
{
  int lottery=(int)(Math.random()*1000);//随机生成一个彩票数(三位数100--900)
  
  Scanner input=new Scanner(System.in);
  System.out.print("请输入您的彩票选号(三位数字): ");
  int guess=input.nextInt();
        int lotteryDigit3=lottery/100;  //彩票的百位数
  int lotteryDigit2=lottery/10;  //彩票的十位数
  int lotteryDigit1=lottery%10;  //彩票的个位数
        
  int guessDigit3=guess/100;  //选号的百位数
  int guessDigit2=guess/10;  //选号的十位数
  int guessDigit1=guess%10;  //选号的个位数

  System.out.println("这期彩票的有奖号码是: "+lottery);
        if(guess==lottery)
                System.out.println(" 您猜中了所有的数字并且顺序一样:恭喜您获得10000美金的奖励,欢迎您再次光临");
else if( guessDigit1==lotteryDigit2 && guessDigit1==lotteryDigit3
&& guessDigit2==lotteryDigit1 && guessDigit2==lotteryDigit3
&& guessDigit3==lotteryDigit1 && guessDigit3==lotteryDigit2)
System.out.println(" 您猜中了所有的数字但顺序不一样:恭喜您获得3000美金的奖励,欢迎您再次光临");
else if(guessDigit1==lotteryDigit1 ||guessDigit1==lotteryDigit2 ||guessDigit1==lotteryDigit3
  ||guessDigit2==lotteryDigit1||guessDigit2==lotteryDigit2 || guessDigit2==lotteryDigit3
  ||guessDigit3==lotteryDigit1||guessDigit3==lotteryDigit2 || guessDigit3==lotteryDigit3)
System.out.println(" 您只猜中了一个的数字:恭喜您获得1000美金的奖励,欢迎您再次光临");
else
  System.out.println(" 很遗憾!您没猜中了任何数字:不要放弃,请再接再厉,下次获大奖的可能就是您哦!");
  
}
}
/*
请输入您的彩票选号(三位数字): 123
这期彩票的有奖号码是: 575
很遗憾!您没猜中了任何数字:不要放弃,请再接再厉,下次获大奖的可能就是您哦!
*/

评分

参与人数 1技术分 +1 收起 理由
曹睿翔 + 1 技术分慢慢加,没意见吧?

查看全部评分

回复 使用道具 举报
本帖最后由 电玩 于 2013-5-1 00:25 编辑

3.16(任意字符)使用Math.random()编写程序,显示任意一个大写字母。

class  DisplayAnyCapitalLetters16 //显示任意一个大写字母。查询了ASCII码表  A-Z 分别对应的是 65-90
{
public static void main(String[] args)
{
  int number = 65+(int)(Math.random()*26) ;//复习题3.9  得到 65<=number <91
        System.out.println((char)number);  //编程题2.8 ASCII码对应的字符
  }
}
回复 使用道具 举报
入学呢,面试什么的,会按照视频的知识点串着问,要兼顾学习了
回复 使用道具 举报
曹睿翔 发表于 2013-5-1 07:10
入学呢,面试什么的,会按照视频的知识点串着问,要兼顾学习了

谢谢斑竹提醒!
我现在已经看到 java IO部分了。学习java,不仅仅是为了应付考试,更重要的是自己真的能解决java问题的思路。
回复 使用道具 举报
本帖最后由 电玩 于 2013-5-2 09:54 编辑

3.17(游戏:剪刀、石头、布)编写可以玩最流行的剪刀-石头-布游戏的程序。(剪刀可以剪布,石头可以砸剪刀,而布可以包石头)程序提示用户随机产生一个数,这个数为0、1、2,分别表示石头、剪刀和布。程序提示用户输入值0、1、2,然后显示一个消息,表明用户和计算机谁赢了游戏,谁输了游戏,或是打成平手。

import java.util.Scanner;
class RockPaperScissors17 //剪刀石头布
{
public static void main(String[] args)
{
  int number=(int)(Math.random()*10)%3;//随机生成一个剪刀石头布的数
  Scanner input=new Scanner(System.in);
  System.out.print("请出拳(0表示石头,1表示剪刀,2表示布):  ");
  int guess =input.nextInt();

  switch(guess){               
  case 0:  System.out.println("您出的拳是石头。");
           break ;
  case 1: System.out.println("您出的拳是剪刀。");
           break ;
  case 2:  System.out.println("您出的拳是布。");
           break ;
  }
      switch(number){
  case 0:  System.out.println("计算机出的拳是石头。");
           break ;
  case 1: System.out.println("计算机出的拳是剪刀。");
           break ;
  case 2:  System.out.println("计算机出的拳是布。");
           break ;
  }
  
  if (guess==number)
  {
   System.out.println("你们打平了");
  }else if((guess=='0'&& number=='1')   
   ||(guess=='1'&&number=='2')
   ||(guess=='2'&&number=='0'))
  System.out.println("恭喜您,您获胜了!");
  else
  System.out.println("很遗憾,您输了!");
      }
}
/*
请出拳(0表示石头,1表示剪刀,2表示布):  0
您出的拳是石头。
计算机出的拳是石头。
你们打平了
*/
回复 使用道具 举报
本帖最后由 电玩 于 2013-5-2 10:14 编辑

3.18(使用输入对话框)使用输入对话框改写程序清单3-8。

import javax.swing.JOptionPane;
class  LeapYearDialog18 //判定闰年对话框
{
public static void main(String[] args)
{
  String yearString=JOptionPane.showInputDialog("请您输入年份: ");
  int year=Integer.parseInt(yearString);
  boolean isLeapYear=(year%4==0 && year%100 !=0)||(year%400==0);//将定义用逻辑运算符实现
   
   if(isLeapYear){
   String output=year+"年是闰年! ";
   JOptionPane.showMessageDialog(null,output);}
   else{
     String output=year+"年不是闰年! ";
     JOptionPane.showMessageDialog(null,output);}
   
}
}

更多图片 小图 大图
组图打开中,请稍候......
回复 使用道具 举报
本帖最后由 电玩 于 2013-5-4 18:58 编辑

3.19(验证三角形的有效性)编写程序。读取三角形的三条边,并确定输入是否有效。如果任意两条边的和大于第三边则输入有效。

import java.util.Scanner;
class VerificationTriangle19 //验证三角形的有效性
{
public static void main(String[] args)
{
  Scanner input=new Scanner(System.in);
  System.out.print("请依次输入三角形的三边 :  ");
  double a =input.nextDouble();
  double b =input.nextDouble();
  double c =input.nextDouble();
  if((a+b)>c && (a+c)>b && (b+c)>a)
  System.out.println("这个三角形是有效的");
  else
   System.out.println("这个三角形是无效的");
}
}
/*
请依次输入三角形的三边 :  2.5 2 1
这个三角形是有效的
请依次输入三角形的三边 :  1 2.5 1
这个三角形是无效的
*/

评分

参与人数 1技术分 +1 收起 理由
曹睿翔 + 1 神马都是浮云

查看全部评分

回复 使用道具 举报
本帖最后由 电玩 于 2013-5-4 19:19 编辑

3.20(科学方面:风寒温度)练习题2.17给出计算风寒温度的公式。这个公式适用于温度在华氏-58摄氏度到41摄氏度之间,并且风速大于或等于2的情况。编写一个程序,提示用户输入温度值和一个风速值。如果输入值是合法的,那么显示温度,否则显示一条消息,表明温度或风速是不是合法值。

import java.util.Scanner;
class ColdTemperature20 //风寒温度
{
public static void main(String[] args)
{
  Scanner input=new Scanner(System.in);
  double temperature,speed;
  do{
  System.out.print("请输入室外温度(以华氏摄氏度为单位:-58度到41度之间的数字):");
   temperature=input.nextDouble();//接收室外温度
  if(temperature<-58 || temperature>41 )
   System.out.println("你输入的室外温度不是合法数值。");
  }while(temperature<-58 || temperature>41);
          do{
        System.out.print("请输入风速(以每小时英里数为单位,输入大于等于2的数字):");
   speed=input.nextDouble();//接收风速
  if(speed<2)
              System.out.println("你输入的风速不是合法数值。");
    }while(speed<2);
        double coldTemperature=35.74+0.6215*temperature-35.75*Math.pow(speed,0.16)+0.4275*temperature*Math.pow(speed,0.16);//计算风寒温度
  
  System.out.println("风寒温度是"+coldTemperature+"华氏度。");
  
}
}
/*
请输入室外温度(以华氏摄氏度为单位:-58度到41度之间的数字):44
你输入的室外温度不是合法数值。
请输入室外温度(以华氏摄氏度为单位:-58度到41度之间的数字):5.3
请输入风速(以每小时英里数为单位,输入大于等于2的数字):1
你输入的风速不是合法数值。
请输入风速(以每小时英里数为单位,输入大于等于2的数字):6
风寒温度是-5.567068455881625华氏度。
*/
回复 使用道具 举报
本帖最后由 电玩 于 2013-5-5 08:38 编辑

3.21(科学方面:某天是星期几)泽勒一致性是由克里斯汀.泽勒开发的用于计算某天是星期几的算法。这个公式是:
h=(q+[26*(m+1)/10]+k+k/4+j/4+5*j)%7
其中:h是一个星期中的每一天(0为星期六,1为星期天,2为星期一,4为星期二,依次类推)
      q是某月的天数
      m是月份(3为3月,4为4月,12为12月)一月和二月分别记为上年的13月和14月。
      j是世纪数 即 year/100
        k是世纪的年数  year%100
编写程序,提示用户输入年、月和该月的哪一天,然后显示它是一周中的星期几。

提示: 对整数n而言 [n]=(int)n.一月和二月在这个公式里是用13和14表示的。所以需要将用户输入的月份1转换为13,将用户输入的月份2转换为14,同时将年份改为前一年。

import java.util.Scanner;
class DayOfWeek21 //某天是星期几
{
public static void main(String[] args)
{
  Scanner input=new Scanner(System.in);
  System.out.print("请输入年份(例如2008): ");
        int year=input.nextInt();
  System.out.print("请输入月份(1-12): ");
        int month=input.nextInt();
  if(month==1){
   month=13;
   year=year-1;
    }else if(month==2){
    month=14;
    year=year-1;
    }
  System.out.print("请输入该月的哪一天(1-31): ");
        int day=input.nextInt();
  int h=(day+(26*(month+1)/10)+year%100+year%100/4+year/100/4+5*year/100)%7;
  String week="";
switch(h){
  case 0:week="星期六";
         break;
     case 1:week="星期天";
         break;
     case 2:week="星期一";
         break;
     case 3:week="星期二";
         break;
     case 4:week="星期三";
         break;
     case 5:week="星期四";
         break;
     case 6:week="星期五";
         break;
  
  
  }

if(month==14){
month=2;
year=year+1;
}else if(month==13){
month=1;
year=year+1;
}
  System.out.println(year+"年"+month+"月"+day+"日是"+week);
}
}
/*
请输入年份(例如2008): 2002
请输入月份(1-12): 3
请输入该月的哪一天(1-31): 26
2002年3月26日是星期二
请输入年份(例如2008): 2013
请输入月份(1-12): 1
请输入该月的哪一天(1-31): 1
2013年1月1日是星期二
*/

      
回复 使用道具 举报
本帖最后由 电玩 于 2013-5-6 08:59 编辑

3.22(几何方面:点是否在圆内)编写程序,提示用户输入一个点(x,y),然后检查这个点是否在以原点(0,0)为圆心,半径为10的圆内。例如:(4,5)是圆内的一点,而(9,9)是圆外的一点,如图3-7a所示。
提示:如果一个点到(0,0)的距离小于或等于10,那么该点就在圆内,计算距离的公式是  

截图34.png (4.78 KB, 下载次数: 0)

截图34.png
回复 使用道具 举报
import java.util.Scanner;
class PointInsideCircle22 //点是否在圆内
{
        public static void main(String[] args)
        {
                Scanner input=new Scanner(System.in);
                System.out.print("请输入一个点(x  y): ");
        double x =input.nextDouble();
                double y =input.nextDouble();

double distance=Math.pow(x*x+y*y ,0.5);//计算距离
if (distance<=10)
{
        System.out.println("点("+x+","+y+")在圆内");
}else
        System.out.println("点("+x+","+y+")在圆外");
}
}
/*
请输入一个点(x  y): 4 5
点(4.0,5.0)在圆内

请输入一个点(x  y): 9 9
点(9.0,9.0)在圆外
*/
回复 使用道具 举报
本帖最后由 电玩 于 2013-5-10 11:54 编辑

3.23(几何方面:点是否在矩形内)编写程序,提示用户输入点(x,y),然后检测该点是否在以原点(0,0)为中心,宽为10、高为5的矩形中。例如:(2,2)在矩形内而(6,4)在矩形外。
提示:如果到点(0,0)的水平距离小于等于10/2且到点(0,0)的垂直距离小于5/2,该点就在矩形内。

import java.util.Scanner;
class  PointInsideRectangle23 //点是否在矩形内
{
public static void main(String[] args)
{
  Scanner input=new Scanner(System.in);
  System.out.print("请输入一个点(x  y): ");
        double x =input.nextDouble();
  double y =input.nextDouble();
if (Math.abs(x) <=5 && Math.abs(y)<= 2.5)
{
System.out.println("点("+x+","+y+")在矩形内");
}else
System.out.println("点("+x+","+y+")在矩形外");
}
}
/*
请输入一个点(x  y): 2 2
点(2.0,2.0)在矩形内
请输入一个点(x  y): 6 4
点(6.0,4.0)在矩形外
*/

评分

参与人数 1技术分 +1 收起 理由
曹睿翔 + 1 赞一个!

查看全部评分

回复 使用道具 举报
强悍的哥们,向你学习。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马