1.在java中通过Scanner类完成控制台的输入,查阅JDK帮助文档,Scanner类实现基本数据输入的方法是什么?不能只用文字描述,一定要写代码,通过具体实例加以说明。 例.
1Scanner sc = new Scanner(System.in); 2int i = sc.nextInt();
Scanner 的头文件为import java.util.Scannner,随后再用Scanner声明,就可以调用了。字符串类型遇到空格或者回车就结束输入,需要用到nextline(); 2.Random类和Math类的random()方法都能产生随机数,这两种方式有什么区别,各有什么特点呢?查阅JDK帮助文档,并举例加以说明。 调用Math类的random()方法产生的为[0,1)的随机数,返回的是浮点类型的值,Random就是直接产生长整形的随机数。
1Random rand = new Random(); 2price = rand.nextInt(100);
产生的是0-100的随机数。
double a=Math.random()*(3-1)+1
产生的是1-3的随机数。 3.运行下列程序,结果是什么?查阅资料,分析为什么。
1public class Test { 2 public static void main(String args[]) { 3 double a = 0.1; 4 double b = 0.1; 5 double c = 0.1; 6 if((a + b + c) == 0.3){ 7 System.out.println("等于0.3"); 8 }else { 9 System.out.println("不等于0.3"); 10 } 11 } 12}
因为计算机用二进制来存储数据,十进制的0.1转换为二进制后会有误差,所以0.1+0.2!=0.3. 改正方法:
1 public static void main(String args[]) { 2 double a = 0.1; 3 double b = 0.1; 4 double c = 0.1; 5 if((a + b + c)-0.3<1e-6){ 6 System.out.println("等于0.3"); 7 }else { 8 System.out.println("不等于0.3"); 9 } 10 }
4.总结: (1).猜价格一开始写的是特别复杂的方法,后来简化了一下。 (2).万年历的输出出错在println上面很多次,忘记了println再java中是输出后自动换行,改成printf后就好了。 (3).得分开始用的产生随机数的方法,后来改成了手动键盘输入,就是需要一次输入50个数。 (4).发现Arrays.sort方法非常好用,不需要每次去写冒泡排序了。 二、实验 1.看商品猜价格。
1import java.util.Random; 2import java.util.Scanner; 3 4public class PriceTuo { 5 public static void main(String args[]) { 6 Scanner input = new Scanner(System.in); 7 Random rand = new Random(); 8 int price, i, j = 0, guess, sum = 100, x; 9 price = rand.nextInt(100); 10 do { 11 System.out.println("请输入商品价格!,有五次机会"); 12 for (i = 1; i <= 5; i++) { 13 guess = input.nextInt(); 14 if (price > guess) { 15 System.out.println("猜小了,您还有" + (5 - i) + "次机会,得分为" + (sum - i * 20)); 16 j = sum - i * 20; 17 } else if (price < guess) { 18 System.out.println("猜大了,您还有" + (5 - i) + "次机会,得分为" + (sum - i * 20)); 19 j = sum - i * 20; 20 } else { 21 System.out.println("猜对了,得分为" + (sum - i * 20)); 22 j = sum - i * 20; 23 } 24 } 25 System.out.println("您一共猜了" + (i - 1) + "次,总得分为" + j); 26 System.out.println("请选择继续游戏还是退出 1/0"); 27 x = input.nextInt(); 28 29 } while (x == 1); 30 System.out.println("游戏已退出"); 31 } 32}
2.万年历
1import java.util.Scanner; 2 3public class WNL { 4 5 public static void main(String[] args) { 6 int b,c,year, month; 7 System.out.println("请输入要判断的年份"); 8 Scanner input = new Scanner(System.in); 9 year = input.nextInt(); 10 if (isLeap(year) == true) { 11 System.out.println(year + "年是闰年!"); 12 } else { 13 System.out.println(year + "年是平年!"); 14 } 15 16 System.out.println("请输入您要判断的年份和月份!"); 17 year= input.nextInt(); 18 month = input.nextInt(); 19 b=days(year,month); 20 System.out.println(year + "年"+month+"月有"+b+"天"); 21 System.out.println("请输入您要判断的年份和月份!"); 22 year= input.nextInt(); 23 month = input.nextInt(); 24 c=totalDays(year,month); 25 System.out.println(year + "年"+month+"月距离1900年1月1日有"+c+"天"); 26 System.out.println("请输入您要输出万年历的年份和月份!"); 27 year= input.nextInt(); 28 month = input.nextInt(); 29 printCalendar(year, month); 30 31 } 32 33 34 35 public static boolean isLeap(int year) { 36 if (year % 4 == 0 && year % 100 != 0 || year % 400 == 0) { 37 return true; 38 } else { 39 return false; 40 } 41 } 42 43 public static int days(int year, int month) { 44 if (month == 4 || month == 6 || month == 9 || month == 11) { 45 return 30; 46 } else if (month == 1 || month == 3 || month == 5 || month == 7 || month == 8 || month == 10 || month == 12) { 47 return 31; 48 } else if (((year % 4 == 0 && year % 100 != 0) || (year % 400 == 0)) && month == 2) { 49 return 29; 50 } else { 51 return 28; 52 } 53 } 54 55 public static int totalDays(int year, int month) { 56 int i, j, sum, sum1 = 0, sum2 = 0; 57 for (i = 1900; i < year; i++) { 58 if ((i % 4 == 0 && i % 100 != 0) || (i % 400 == 0)) { 59 sum1 = sum1 + 366; 60 } else { 61 sum1 = sum1 + 365; 62 } 63 } 64 for (j = 1; j < month; j++) { 65 if (j == 1 || j == 3 || j == 5 || j == 7 || j == 8 || j == 10 || j == 12) { 66 sum2 = sum2 + 31; 67 } else if (j == 4 || j == 6 || j == 9 || j == 11) { 68 sum2 = sum2 + 30; 69 } else { 70 i = year; 71 if ((i % 4 == 0 && i % 100 != 0) || (i % 400 == 0)) { 72 sum2 = sum2 + 29; 73 } else { 74 sum2 = sum2 + 28; 75 } 76 } 77 } 78 sum = sum1 + sum2; 79 return sum; 80 } 81 82 public static void printCalendar(int year, int month) { 83 int a, b, c, d, e, sum; 84 sum = totalDays(year, month); 85 c =( sum % 7)+1;/* 本月第一天是周几 */ 86 System.out.printf("%d年%d月\n", year, month); 87 System.out.println("星期日\t星期一\t星期二\t星期三\t星期四\t星期五\t星期六\n"); 88 if (month == 4 || month == 6 || month == 9 || month == 11) /* 小月份 */ 89 { 90 e = 30; 91 } else if (month == 1 || month == 3 || month == 5 || month == 7 || month == 8 || month == 10 92 || month == 12) /* 大月份 */ 93 { 94 e = 31; 95 } else if (((year % 4 == 0 && year % 100 != 0) || (year % 400 == 0)) && month == 2) /* 闰年二月份 */ 96 { 97 e = 29; 98 } else /* 平年二月份 */ 99 { 100 e = 28; 101 } 102 for (d = 0; d <c; d++) { 103 System.out.printf("\t"); 104 } 105 for (b = 1; b <= e; b++) { 106 System.out.printf("%d\t", b); 107 if ((b+c)%7== 0) { 108 System.out.printf("\n"); 109 } 110 } 111 } 112}
3.评分
1import java.util.Scanner; 2import java.util.Arrays; 3 4public class DeFen { 5 6 public static void main(String[] args) { 7 int i, j; 8 int a[][] = new int[5][10]; 9 Scanner input = new Scanner(System.in); 10 System.out.println("请输入每位选手的得分"); 11 for (i = 0; i < 5; i++) { 12 for (j = 0; j < 10; j++) { 13 a[i][j] = input.nextInt(); 14 } 15 } 16 Aver(a); 17 } 18 19 20 public static int Max(int a[][]) { 21 int max = 0, i, j; 22 for (i = 0; i < 5; i++) { 23 for (j = 0; j < 10; j++) { 24 if (max < a[i][j]) { 25 max = a[i][j]; 26 } 27 } 28 } 29 return max; 30 } 31 32 public static int Min(int a[][]) { 33 int min = 0, i, j; 34 for (i = 0; i < 5; i++) { 35 for (j = 0; j < 10; j++) { 36 if (min > a[i][j]) { 37 min = a[i][j]; 38 } 39 } 40 } 41 return min; 42 } 43 44 public static void Aver(int a[][]) { 45 int i, j,d,e, sum = 0; 46 float b[]; 47 b = new float[5]; 48 float ave; 49 d=Max(a); 50 e=Min(a); 51 for (i = 0; i < 5; i++) { 52 sum=0; 53 for (j = 0; j < 10; j++) { 54 sum = sum + a[i][j]; 55 56 } 57 sum=sum-d-e; 58 ave = sum / 8; 59 b[i] = ave; 60 } 61 Arrays.sort(b); 62 for (i = 4; i >=0; i--) { 63 System.out.println(+ b[i]); 64 } 65 66 } 67}
程序设计思路: 1.看商品猜价格 (1).产生随机数作为价格。 (2).请用户输入价格,五次猜错后或者猜对后显示猜的次数和得分。 (3).请用户选择是否继续游戏,如果继续重复游戏。 2.万年历 (1).输入年份判断是否为闰年 (2).输入年份月份判断有几天 (3).输入年份和月份判断距离1900.1.1有多少天,求出来总天数需要加1。 (4).打印万年历。 3.评分系统 (1).从键盘输入十位选手的得分。 (2).调用最大值最小值函数分别求出每位选手的最高得分和最低得分。 (3).每个选手减去最高得分和最低得分后求出平均值。 (4).调用Arrays.sort方法排序,按顺序输出最终得分。 三、代码托管。 ···