(一).学习总结
1.在java中通过Scanner类完成控制台的输入,查阅JDK帮助文档,Scanner类实现基本数据输入的方法是什么?不能只用文字描述,一定要写代码,通过具体实例加以说明。
最简单的数据输入直接使用Scanner类的next()方法即可
import java.util.Scanner;
public class ScannerDemo01{
public static void main(String[] args){
Scanner scan=new Scanner(System.in);
System.out.print("输入数据:");
String str=scan.next();
System.out.println("输入的数据为:"+str);
}
}
类似的,还有一些其他的方法:
nextInt() :读取整型数据
nextDouble() :读取双精度数据
nextLine():读取输入的 下一行内容
实例:
public static void main(String[] args){
Scanner in=new Scanner(System.in);
System.out.println("请输入商品价格: ");
int x=in.nextInt();
System.out.println("x");
}
2.Random类和Math类的random()方法都能产生随机数,这两种方式有什么区别,各有什么特点呢?查阅JDK帮助文档,并举例加以说明。
区别:
Math类的random()方法,返回带正号的double值,该值大于等于0.0且小于1.0,返回值是一个伪随机选择的数,在该范围内(近似)均匀分布。
Random类,可以指定一个随机数的范围,然后任意产生在此范围的中的数字。
实例:
import java.util.Random;
public class RandomDemo01{
public static void main(String[] args){
Random r=new Random();
for(int i=0;i<5;i++){
System.out.printf(r.nextlnt(100)+"\t");
}
}
运行结果:
16 95 18 71 57 86
如果按照Math类的random()输出,结果为0.。。。。。,是一个小于1.0的数。
3.(1)在Java中必须构造Scanner对象,并与System.in关联,写成这样:
Scanner input=new Scanner(System.in);
才可以进行执行。
(2)在比较字符串的大小时,不可以用==,必须使用String类的equals方法。
实例:
public class String1{
public static void main(String[] args){
String str1="hello";
String str2=new String"hello";
System.out.println("str1 equals str2->"(str1.equals(str2)));
}
}
(3)Java与C语言相比,当执行代码有错时,Java比C语言告诉你的更加详细。Java中输出语句也与C中的大大不同。虽然刚开始接触Java,对很多东西不是特别熟悉,但我相信随着Java的不断学习,会越来越熟悉,可以快速的写出所需的代码。
(二)实验总结
1.猜商品价格
程序设计思路:首先输入一个标准的商品价格,再输入要猜测的价格,将猜测的价格与标准的进行比较,如果5次都没对,退出,输出标准价格,反之,就要判断它是第几次猜对的,输出还余多少次,是否进行下一轮。
问题1:只进行了一轮,没有下一轮。
原因:没有认真考虑,语句放错了位置。
解决方案: 将语句放入while语句中,让它进行循环。
while(choose!=0)
{ ...
...
...
...
System.out.println("输入1继续,0退出");
choose=in.nextInt();
}
问题2:分数计算不对
原因:循环的条件不对
解决方案:
for(i=1;i<6;i++)
{
...
else if(x==y)
{ ...
...
score=0;
score=score+100-(i-1)*20;
System.out.println("得分为:"+score);
}
}
1.万年历
程序设计思路:首先输入某年,判断是闰年还是平年,在判断了闰平年之后,输入某月,进行判断某月有多少天,与1900年1月比较,相差多少年多少天,计算出总天数,最后还需把判断某年某月某日是星期几,以日历的形式表示出来。
问题1:计算总天数时出错
原因:循环时多加了
解决方案:首先输入某年(大于1900)判断闰平年,分别多少天,进行循环,计算出总的天数n,然后再进行循环月份,1,3,5,7,8,10,12月都是31天,4,6,9,11都是30天,2月闰年29天,平年28天。计算出总的天数n1,最后将n+n1得到某年某月之前到1900年1月总的天数。但这必须注意1月之前是上一年的12月31日,所以要判断输入的月份是否是1月,进行合理的运算。
for(j=1900;j<year;j++){
if(year%4==0&&year%100!=0||year%400==0)
{
System.out.println("该年为闰年!");
n=n+366;
}
else
{
System.out.println("该年为平年!");
n=n+365;
}
for(k=1;k<month;k++){
if(month==1){
n1=0;
break;
}
switch(k){
case 2:
if( year%4==0&&year%100!=0||year%400==0)
{ n1=n1+29; }
else
{ n1=n1+28; }
break;
case 1:
case 3:
case 5:
case 7:
case 8:
case 10:
case 12:
n1=n1+31;
break;
case 4:
case 6:
case 9:
case 11:
n1=n1+30;
break;
}
}
System.out.println("总天数为"+(n+n1));
}
问题2: 出日历时间隔和换行有问题
原因: "\t",换行求余出错
解决方案:首先判断第一天是星期几,从该天开始往后依次比较,以"\t"的方式使之列与列对齐,换行时与7求余为0时为一行,当大于7时自动跳转下一行。
...
...
...
System.out.println("日\t一\t二\t三\t四\t五\t六");
for(i=1;i<=week;i++){
System.out.print("\t");
}
...
...
...
System.out.print(i+"\t");
if((i+week)%7==0){
System.out.println("\n");
}
问题2: 所求的星期不对
原因: 求总天数时出错
解决方案:所包含的多少个年,月,日的总和与7求余,余0为星期日,依次往下。
...
week=(n1+day+n)%7;
...
*(三)代码托管**
(四)学习进度条
代码行数(新增/累积) 学习时间(新增/累积) 本周学习内容
目标 5000行 300小时
第2-4周 300/300 30/30 学习了Java
第5周
第6周