java第一次作业
2017-03-16 16:05 空白格DE 阅读(270) 评论(2) 收藏 举报《Java技术》第一次作业
(一)学习总结
1.在java中通过Scanner类完成控制台的输入,查阅JDK帮助文档,Scanner类实现基本数据输入的方法是什么?不能只用文字描述,一定要写代码,通过具体实例加以说明。
java利用scanner类完成控制台的输入,通过scanner函数直接输入参数的形式,来实现输入语句。scanner可以针对任何要处理的文本内容编写自定义的语法分析器,是一种文本扫描器。
例如:
import java.util.Scanner;
public class test{
public static void main(String[] args){
Scanner input=new Scanner(System.in);
System.out.printIn("请输入一个数:");
int length=input.nextInt();
System.out.printIn("输入的数字是:"+length);}
}
2.Random类和Math类的random()方法都能产生随机数,这两种方式有什么区别,各有什么特点呢?查阅JDK帮助文档,并举例加以说明
(1)Random类中实现的随机算法是伪随机,也就是有规则的随机数,Random类中各方法生成的随机数都是均匀分布的。
例如:
import java.util.Random;
public class Ranadd{
public static void main(String[] args){
int x,y;
Random n=new Random();
x=n.nextInt(300-10+1)+10;
y=n.nextInt(300-10+1)+10;
System.out.printIn(x+"+"+y+"="+(x+y));
}
}
(2)Math类的random()的方法是生成[0,1)之间的double类型数
例如:
double a=Math.random();
3心得:
刚开始没有注意这几种的区别,也没有刻意的去在意scanner的方法什么的,通过这次的作业我查阅jdk的帮助文档和查询书还有就是上网查询,又知道了好多知识,写上面的例子的时候也是试了很多次才运行成功的,虽然之前写过,但是也是按照书上的例子模仿着写,根本不懂是什么意思,但是通过这次的作业,查到了好多东西,自己也慢慢的懂点了,以后还是多写多练习吧,争取把不会的都搞懂。
(二)实验总结
1.猜价格游戏:
程序设计思路:利用Random 产生随机数,然后利用Scanner类输入要猜的数并初始化为0,当猜的数与随机数不相等,则输入1-100之间的一个数,如果猜的数大于产生的随机数,则提示太大了;如果猜的数小于产生的随机数,则提示太小了;如果猜了10次,则提示输入的太多,游戏结束了。
问题:没有实现无限循环,在刚开始时遇到了输入一个数过大,再输入一个数过小,找不到正好等于随机数的数,后来通过不断地修改,找到了出现问题的地方,紧接着进行修改,调试,运行,一点点的修改,后来实现了功能。
import java.util.Random;
import java.util.Scanner;
public class suijishu{
public static void main(String[] args) {
int num=getRandomNumber();
int count=0;
Scanner sc=new Scanner(System.in);
int gussNum=0;
while(gussNum!=num){
System.out.println("请输入你猜的数字(1-100)");
gussNum=sc.nextInt();
count++;
if(gussNum>num){
System.out.println("太大了");
}
if(gussNum<num){
System.out.println("太小了");
}
if(count==10){
System.out.println("次数太多,游戏结束");
break;
}
}
if(gussNum==num){
System.out.println("猜对了,一共猜了"+count+"次");
}
}
public static int getRandomNumber() {
return new Random().nextInt(100)+1;
}
2.万年历
设计思路:首先先输入年份和月份,在初始化年份为1900年,在对输入的年份进行闰年还是平年的判断,如果是闰年则为366天,如果是平年则为365天还要对月份进行判断。通过if函数对每个月的天数进行选择。
问题1:每年月份的星期不对
原因1:对年份进行时平年还是闰年的判断有误
问题2:每周的顺序不一样
原因2:没有将周日设置为一周的开始
package com.sxt.test;
import java.util.Scanner;
public class wannianli {
private static final int RUNNIAN = 0;
public static void main(String[] args) {
Scanner s=new Scanner(System.in);
System.out.println("请输入年份");
int year=s.nextInt();
System.out.println("请输入月份");
int month=s.nextInt();
printWANNIANLI(year,month);
}
public static void printWANNIANLI(int year,int month){
System.out.println("星期日\t星期一\t星期二\t星期三\t星期四\t星期五\t星期六");
int kongGe=getKongGe(year,month);
for(int i=1;i<=kongGe;i++){
System.out.print("\t");
}
if(kongGe==7){
System.out.println();
}
for(int i=1;i<=getDaysOfMonth(year,month);i++){
System.out.print(i+"\t");
if((i+kongGe)%7==0){
System.out.println();
}
}
}
public static int getKongGe(int year,int month){
int count=getDaysOfAll(year,month)%7+1;
return count;
}
public static int getDaysOfAll(int year,int month){
int sum=0;
for(int i=1900;i<year;i++){
if(RUNNIAN(i)==true){
sum+=366;
}
else {
sum+=365;
}
}
for(int i=1;i<month;i++){
sum+=getDaysOfMonth(year,i);
}
return sum;
}
public static int getDaysOfMonth(int year,int month){
int day=0;
if(month1(1,3,5,7,8,10,12)){
day=31;
return day;
}
if(month2(4,6,9,11)){
day=30;
return day;
}
if(month3(2)){
if(RUNNIAN(year)==true){
day=29;
}
else{
day=28;
}
}
return day;
}
private static boolean month1(int i, int j, int k, int l, int a,int b,int c) {
return true;
}
private static boolean month2(int m,int n,int f,int r){
return true;
}
private static boolean month3(int q){
return true;
}
private static int month(int i) {
return 0;
}
public static boolean RUNNIAN(int i){
if(i%4==0&&i%100!=0||i%400==0){
return true;
}else{
return false;
}
}
}
(三)代码托管
链接:https://git.oschina.net/hebau_cs15/RJ.git

(四)学习进度条
| 代码行数(新增/累积) | 学习时间(新增/累积) | 本周学习内容 | |
|---|---|---|---|
| 目标 | 5000行 | 300小时 | |
| 第2-4周 | 180行 | 21 | 学习了scanner类的概念及用法 |
| 第5周 | |||
| 第6周 |
(五)总结
在这次的作业中学习到了布尔型,参考书上的例子以及上网查询实例,自己一点一点尝试着去写,写的过程中程序出现了很多各种各样的问题,比如布尔类型的返回值只能用true和false来实现,这些新的东西之前都没有写过,所以在写的过程中总是会忘记,导致了程序总是无法运行。还有就是写程序的时候,对题目没有理解到位,也是程序运行出来跟老师要求的不一样,后来通过询问同学,不断改正,才写出来。还有很多不知道不会用的函数,所以以后还是多加练习,通过实践一点点掌握。
浙公网安备 33010602011771号