(一)学习总结
1.Scanner类数据的使用方法
程序头加上import java.util.Scanner;程序中Scanner in = new Scanner(System.in);
使用输入数据时用 数据类型 类名 = 类名.next数据类型(); 如输入整型数据: int x= x.nextInt();
每种数据类型都有对应的输入方法,但是char类型没有,可以用string型替代,但是string类型与其他类型不同,如果要输入一个包含空格的字符串,
就用nextLine();如String x=in.nextLine();
import java.util.Scanner;
public class Wannianli {
private static final String pubilc = null;
public static void main(String args[]) {
// TODO Auto-generated constructor stub
Wannianli Wan=new Wannianli();
int year,month,i,k,n,sum,j=0,a,b;
System.out.println("请输入年份:(>=1900)");
Scanner input=new Scanner(System.in);
year=input.nextInt();
System.out.println("请输入月份:(1-12)");
month=input.nextInt();
}}
2.Random类和Math类的random()方法都能产生随机数,这两种方式有什么区别,各有什么特点呢?查阅JDK帮助文档,并举例加以说明。
Math.random()返回的只是从0到1之间的小数,如果要10到30,就先放大10倍,即0到10之间,这里还是小数,如果要整数,就强制转换int,然后再加上20即为10~30.
如:(int)(Math.random()*10) + 20
而 Random类产生的随机数,在其最大值范围内,按照概率均匀分布的。也就是说,两个种子数相同的Random对象,第一次生成的随机数字完全相同,第二次生成的随机数字也完全相同。
如产生一个在10~30之间的整数
package java练习;
public class X {
public static void main(String[] args) {
// TODO Auto-generated method stub
int x=(int)(Math.random()*20+10);
System.out.println(x);
}
}
package java练习;
import java.util.Random;
public class S1 {
public static void main(String[] args) {
// TODO Auto-generated method stub
Random rand = new Random();
int x=rand.nextInt(20)+10;
System.out.println(x);
}
}
3.改正下列程序
public class Test {
public static void main(String args[]) {
double a = 0.1;
double b = 0.1;
double c = 0.1;
if((a + b + c) == 0.3){
System.out.println("等于0.3");
}else {
System.out.println("不等于0.3");
}
}
}
输出结果为:"不等于0.3".
修改:
package test;
import java.math.BigDecimal;
import java.math.MathContext;
public class test {
public static void main(String args[]) {
double arr = 0.1,brr = 0.1,crr = 0.1;
if((arr + brr + crr) -0.3>0){
System.out.println("等于0.3");
}
else {
System.out.println("不等于0.3");
}
}
}
输出结果为:"等于0.3".
(二)实验总结
实验内容:
1.看商品猜价格
import java.util.Random;
import java.util.Scanner;
public class Guess2 {
public static void main(String[] args) {
// TODO Auto-generated method stub
int price_guess=0 ;
int max=100;
int min=1;
Random random=new Random();
int price=random.nextInt(max)%(max-min+1)+min;
for(int i=1,j=0;i<=10;i++){
System.out.println("请输入猜测的商品价格:");
Scanner input=new Scanner(System.in);
price_guess=input.nextInt();
if(price<price_guess&&j<=10)
{System.out.println("猜大了"); j++;}
else if(price>price_guess&&j<=10) {System.out.println("猜小了");
j++;}
else if(price==price_guess&&j>10)
{System.out.println("商品价格:"+price);}
else if(price==price_guess&&j<=10)
{System.out.println("商品价格:"+price);
System.out.println("猜了"+j+"次");}
}}}
结果
**程序设计思路:
首先根据Random函数产生随机数,再输入数据同随机数进行比较。
定义一个j用于记录猜测次数,再根据算法把最终得分计算出来。
使用for循环判断是否进入下一轮循环.
2.万年历
import java.util.Scanner;
public class Wannianli {
private static final String pubilc = null;
public static void main(String args[]) {
// TODO Auto-generated constructor stub
Wannianli Wan=new Wannianli();
int year,month,i,k,n,sum,j=0,a,b;
System.out.println("请输入年份:(>=1900)");
Scanner input=new Scanner(System.in);
year=input.nextInt();
System.out.println("请输入月份:(1-12)");
month=input.nextInt();
System.out.println("星期日\t星期一\t星期二\t星期三\t星期四\t星期五\t星期六\n");
sum=totalDays(year,month);
n=(sum+1)%7;
for(i=1;i<=n;i++);
{System.out.println("\t");
j++;}
a=Days(year,month);
for(k=1;k<=a;k++)
{System.out.print(k+"\t");
j++;
if(j%7==0)
System.out.println("\n");}
}
public static boolean isLeap(int year) {
if(year%4==0&&year%100!=0||year%400==0)
return true;
else
return false;
}
public static int Days(int year,int month ) {
int a[]= {31,28,31,30,31,30,31,31,30,31,30,31};
if(isLeap(year))
a[1]=29;
return a[month-1];
}
public static int totalDays(int year,int month) {
int i,j,day,totaldays=0;
for(j=1;j<month;j++)
{day=Days(year,j);
totaldays=totaldays+day;}
for(i=1900;i<year;i++)
{if(isLeap(i)) totaldays=totaldays+366;
else totaldays=totaldays+365;
}
return totaldays;
}
}
**程序设计思路:
.输入年份、月份, year%4==0&&year%100!=0||year%400==0 判断平年闰年,得出2月天数,把1900年到输入的年份总天数求出,再加上当年的月天数day, 控制输出格式每7天为一行打印出万年历。
问题:输出结果总是不对,但找不到自己的程序哪里有问题,希望得到大家帮助。
3.评分系统
思路:用数组存储评委打的分数, 利用循环找到最大值最小值,总分减去最大分最小分 ,求出平均值为最后得分,调用排序函数最后输出。
(三)玛云托管