java第一次作业

1.在java中通过Scanner类完成控制台的输入,查阅JDK帮助文档,Scanner类实现基本数据输入的方法是什么?

先导入 java.util.scanner,再通过newScanner(System.in)创建一个Scanner,输入类型也有好多种:
nextInt() :读取整型数据     
nextDouble()  :读取双精度数据    
next()—读取输入的下一个单词(空格作为分隔符)
nextLine():读取输入的 下一行内容

import java.util.Scanner;
Scanner input=new Scanner(System.in);
int shuo=input.nextInt();

2.Random类和Math类的random()方法都能产生随机数,这两种方式有什么区别,各有什么特点呢?

在java.util.Random类中主要的功能是用于产生随机数的。
常用方法:
nextFloat() 返回一个在 0.0 和 1.0 之间均匀分布的 float 值。
nextInt() 返回一个随机int值
nextInt(int n)返回一个0(包括)和n(不包括)之间的均匀分布的int值。

3.实验中遇到的问题

字符串相等equals和‘==’的区别

String str1=new String("a");
String str2=new String("a");
str1==str2  //输出false
str1.equals(str2)  //输出true

而如果这样声明

String str1="a";
String str2="a";
str1==str2  //输出true
str1.equals(str2)  //输出true

4.实验总结

(1)万年历

根据1900年1月1日是周1算出月份距离1900年1月1日多少天然后用1+totalDays(year,month)%7;算出月份开始星期然后(特殊根据平年闰年算出2月多少天)输出。

package 作业;
import java.util.Scanner;
public class 日历 {
	public static void main(String args[]){
		Scanner input=new Scanner(System.in);
		System.out.println("请输入年份");
		int a=input.nextInt();
		System.out.println("请输入月份");
		int b=input.nextInt();
		printCalender(a,b);
	}	
	private static boolean isLeap(int year){
			if (year%100 ==0){
				if(year%400==0){
				return true;
				}
				}
					else {
				 if(year%4==0){
				return true;
				   }
				}
				return false;
		}
	private static int days(int year, int month){
		
		if(month==1||month==3||month==5||month==7||month==8||month==10||month==12){
			return 31;
		}
		else if(month==2){
			if(isLeap(year)){
				return 29;
			}
			else{
				return 28;
			}
		}
		else{
			return 30;
		}
			
	}
	private static int totalDays(int year, int month){
		int a,i;
		a=(year-1900)*365+(year-1900-1)/4;
		for(i=1;i<month;i++){
			a=a+days(year,i);
		}
		return a;
	}
	private static void printCalender(int year, int month){
		int a,b,i,j,k;
		a=1+totalDays(year,month)%7;
		b=days(year,month);
		System.out.println("\t一\t二\t三\t四\t五\t六\t七");
		for(i=1,k=1;i<7;k++,i++){
			if(i==a){
				for(j=1;j<=b;j++,k++){
					System.out.print("\t"+j);
					if(k%7==0){
						System.out.print("\n");
					}
				}
			}
			else{
				System.out.print("\t ");
			}
		}
	}

}

(2)猜数

嵌套循环

package 作业;
import java.util.Random;
import java.util.Scanner;
public class 猜数字 {
	public static void main(String args[]){
		Random rand=new Random();
		Scanner scan = new Scanner(System.in);
		int i; 
		for(;;){	
			int a=rand.nextInt(100);
			System.out.println("答案是"+a);
			for(i=1;i<=5;i++){
				if(shuo(a,i)==0){
					
				}
				else{
					break;
				}
				if(i==5){
					System.out.println("5次都猜错了0分正确答案是"+a);
				}
			}
			System.out.println("是否继续Y or N");
			String q=scan.next();
			if(q.equals("N")){
				System.exit(0);
			}
		}

	}
	private static int shuo(int a,int i){
		System.out.println("请输入您猜的价格");
		Scanner input=new Scanner(System.in);
		int b=input.nextInt();
		if(a==b){
			System.out.println("猜对了分数为"+(100-(i-1)*20)+"猜了"+i+"次");
			return 1;
		}
		else{
			if(a<b){
				System.out.println("猜大了还有"+(5-i)+"次机会");
				return 0;
			}
			else{
				System.out.println("猜小了还有"+(5-i)+"次机会");
				return 0;
			}
		}
	}
}

5.代码托管

6.学习进度条

---- 代码行数(新增/累积) 学习时间(新增/累积) 本周学习内容
目标 5000 行 300 h
第2-4周 121/121 行 1.5 h 输入函数,随机数
第5周
第6周
posted @ 2017-03-16 11:06  朔朔  阅读(186)  评论(1)    收藏  举报