项目2 Java语言基础
实验目的:熟悉Java基本语法,基本数据类型,各种运算符及表达式的使用,掌握运算符优先级,熟悉使用Java的选择语句,循环语句。
实验性质:验证性实验+设计性实验
实验内容:
(1)分析并调试第2章中的实例。(略)
(2)分别用if语句和switch语句编写程序,实现功能:根据学生的成绩(可能取值为5、4、3、2、1),显示相应的等级(优秀、良好、中等、及格、不及格)
import java.util.Scanner;
public class Grade {
public static void main(String []args) {
//if方法
System.out.print("请输入学生成绩:");
Scanner input = new Scanner(System.in);
int grade = input.nextInt();
if(grade==5) System.out.println("优秀");
if(grade==4) System.out.println("良好");
if(grade==3) System.out.println("中等");
if(grade==2) System.out.println("及格");
if(grade==1) System.out.println("不及格");
//switch方法
System.out.print("请输入学生成绩:");
int grade2 = input.nextInt();
switch(grade2) {
case 5:System.out.println("优秀");break;
case 4:System.out.println("良好");break;
case 3:System.out.println("中等");break;
case 2:System.out.println("及格");break;
case 1:System.out.println("不及格");break;
}
input.close();
}
}
(3)输出500以内能被5和7整除但不能被3整除的数据,并计算它们的和。
public class Divide {
public static void main(String[] args) {
int num = 0;
for(int i=0;i<501;i++) {
if(i%5==0&&i%7==0&&i%3!=0) {
System.out.print(i+" ");
num+=i;
}
}
System.out.println("和为"+num);
}
}
(4)利用循环语句输出如下图形:
public class Picture {
public static void main(String []args) {
for(int i = 0;i<5;i++) {
for(int j=0;j<5;j++) {
System.out.print("*");
if(j==4) System.out.println();
}
for(int s=0;s<i+1;s++) {
System.out.print(" ");
}
}
}
}
(5)人机猜拳:编写一个人机进行石头剪刀布的小游戏,进行完一轮猜拳后,显示输赢信息。
提示:程序流程:
[1]产生一个随机数(范围1-3)
[2]用户输入一个整数(范围1-3)(要有良好的信息提示)
[3]根据石头、剪刀、布的规则,判断用户输入数据与随机数的关系,给出输赢信息。
随机数产生说明
方法一:使用Math.random()方法
1.需要在程序开始导入Math类,如下
import java.lang.;
也可以不导入,因为java.lang包系统默认使用
2. 产生[m,n]之间的整数(m<= x <=n)的表达式:
int x= (int)(Math.random()(n-m+1)+m) 方法二:使用Random类的方法
1.需要在程序开始导入Random类,如下
import java.util.*;
2. 产生[m,n]之间的整数(m<= x <=n)的语句:
Random obj=new Random();
int x=obj.nextInt(n-m+1)+m;
输入:
在文件开始需加入: import java.util.*;
Scanner read=new Scanner(System.in);
int x=read.nextInt();//读入一个整数
import java.util.Scanner;
public class FingerGuessing {
public static void main(String []args) {
Scanner in = new Scanner(System.in);
System.out.println("请输入您要出的手势 1.剪刀 2.石头 3.布");
int x = in.nextInt();
if(x==1)
System.out.println("我出剪刀");
else if(x==2)
System.out.println("我出石头");
else
System.out.println("我出布");
int y= (int)(Math.random()*3+1);
if(y==1)
System.out.println("对方出剪刀");
else if(y==2)
System.out.println("对方石头");
else
System.out.println("对方布");
if(x==y)
System.out.println("平局");
else if((x==1&&y==2)||(x==2&&y==3)||(x==3&&y==1))
System.out.println("很遗憾,您输了");
else
System.out.println("恭喜您,获得胜利");
in.close();
}
}
(6)猜数游戏:计算机随机产生一个数x;用户输入一个数据,与随机数相比较,并给出提示信息:
若输入数据>随机数,提示用户数据大了,并要求用户重新输入数据;
若输入数据<随机数,提示用户数据小了,并要求用户重新输入数据;
如此反复,直到用户输入数据与随机数相同为止。
import java.util.Random;
import java.util.Scanner;
public class GuessNumber {
public static void main(String []args) {
Random obj=new Random();
int x = obj.nextInt(100)+1;
Scanner price=new Scanner(System.in);
do{
System.out.println("猜测一下某某的价格(0~100元)");
int y = price.nextInt();
if(x>y) {
System.out.println("没这么便宜!");
System.out.print("再");}
else if(x<y) {
System.out.println("有这么贵吗?");
System.out.print("再");}
else
{
System.out.println("猜对了");price.close();break;}
}while(true);
}
}
(7)输入年月日,显示该天是这一年中的第几天,要求对输入的日期进行合理性检查。
import java.util.Scanner;
public class Date {
public static void main(String []args) {
int year;
int month;
int day;
int days;
int monthday;
Scanner in = new Scanner(System.in);
System.out.print("请输入年份");
year=in.nextInt();
while(true) {
System.out.print("请输入月份(1~12)");
month=in.nextInt();
if(month>0&&month<13)
break;
else
System.out.print("输入错误,");
}
while(true) {
System.out.print("请输入日");
day=in.nextInt();
if(month==1||month==3||month==5||month==7||month==8||month==10||month==12) //31天的月份
if(day<32&&day>0)
{
monthday=31;break;}
else
System.out.print("输入错误,");
else if(month==2&&year%4==0&&year%100!=0) //普通闰年
if(day<30&&day>0)
{
monthday=29;break;}
else
System.out.print("输入错误,");
else if(month==2&&year%400==0&&year%100==0) //特殊闰年
if(day<30&&day>0)
{
monthday=29;break;}
else
System.out.print("输入错误,");
else if((month==2&&year%4!=0)||(year%100==0&&year%400!=0)) //非闰年
if(day<29&&day>0)
{
monthday=28;break;}
else
System.out.print("输入错误,");
else
if(day<31&&day>0) //30天的月份
{
monthday=30;break;}
else
System.out.print("输入错误,");
}
days=0;
switch(month) {
case 12:days+=31;
case 11:days+=30;
case 10:days+=31;
case 9:days+=30;
case 8:days+=31;
case 7:days+=31;
case 6:days+=30;
case 5:days+=31;
case 4:days+=30;
case 3:days+=31;
case 2:{
if(year%4==0) days+=29;
else days+=28;
}
case 1:days+=31;
}
days=days-(monthday-day);
System.out.println(year+"年"+month+"月"+day+"日,是今年第"+days+"天");
in.close();
}
}