实验名称:程序控制语句和JAVA编译器的使用 |
|
实验室名称:902 |
实验台号:901 |
学生姓名: |
专业班级:2014级2班 |
指导教师: |
实验日期: 2016-03-24 |
一、实验目的
1.熟悉JDK开发环境。
2. 熟悉“记事本”编辑器或eclipse环境的使用。
3.掌握Java程序结构和开发过程。
4.掌握if语句、if-else-if、switch结构的使用
5. 掌握使用while、do-while、for、continue语句和break语句实现循环。
二、实验仪器及环境:
PC计算机;windows7操作系统、JDK1.6和eclipse开发工具
1. 分支语句编程
(1)使用简单if语句编程,给定三个整数,然后按照从小到大的顺序将其输出。
输入:输入数据有多组,每组3个数值。
输出:按从小到大顺序排好的三个数。
源代码:
packagecn.edu.nefu.zhihu;
importjava.util.Scanner;
public class test{
public static void main(String[] args){
int a,b,c;
Scanner reader=newScanner(System.in);
while(reader.hasNextInt()&&reader.hasNextInt()&&reader.hasNextInt()){
a=reader.nextInt();
b=reader.nextInt();
c=reader.nextInt();
if(a>b){
int t=a;
a=b;
b=t;
}
if(b>c){
int t=b;
b=c;
c=t;
}
if(a>b){
int t=a;
a=b;
b=t;
}
System.out.printf("%d%d %d\n",a,b,c);
}
//System.out.println("Helloworld!");
}
}
(2)分别使用if-else-if语句或switch语句编程,确定某一月在哪个季节。
输入:输入数据只有一组,每组1个代表月份的数值。
输出:对应输入数值的所属季度。
源代码:
package cn.edu.nefu.zhihu;
import java.util.Scanner;
public class test {
public static void main(String[] args) {
Scanner reader=new Scanner(System.in);
System.out.println("输入一个月份:");
int n=reader.nextInt();
switch(n){
case 1 :
case 2 :
case 3 :System.out.printf("%d月属于第一季度",n);break;
case 4 :
case 5 :
case 6 :System.out.printf("%d月属于第二季度",n);break;
case 7 :
case 8 :
case 9 :System.out.printf("%d月属于第三季度",n);break;
case 10 :
case 11 :
case 12 :System.out.printf("%d月属于第四季度",n);break;
default: System.out.println("输入有误");break;
}
}
}
(3)编程输入学生的学习成绩的等级,给出相应的成绩范围。设A级为85分以上(包括85分);B级为70分以上(包括70分);C级为60分以上(包括60分);D级为60分以下。分别使用switch语句实现。
输入:输入数据只有一组,每组1个字符。
输出:对应输入字符的成绩范围。
代码实现:
package cn.edu.nefu.zhihu;
import java.util.Scanner;
public class test {
public static void main(String[] args) {
Scanner reader=new Scanner(System.in);
String c;
char str[];
char c1;
System.out.println("输入一个等级:");
c=reader.nextLine(); //等待用户在命令行输入一行文本回车,即以回车结束
str=c.toCharArray(); //将此字符串转化为一个新的字符数组
c1=str[0];
//System.out.println(str);
switch(c1){
case 'A' :System.out.println("成绩范围为:[85,100]");break;
case 'B' :System.out.println("成绩范围为:[70,85)");break;
case 'C' :System.out.println("成绩范围为:[60,70)");break;
case 'D' :System.out.println("成绩范围为:[0,60)");break;
default: System.out.println("输入有误");break;
}
}
}
2.循环语句编程
(1) 使用while或do-while或for语句编程,求1~100的和。
(2) 使用continue语句实现:将100~300之间的不能被3整除的数输出。
(3) 使用break语句实现记数:从1~100,当数到78时程序终止。
输出:分别按要求输出。
源代码:
package cn.edu.nefu.pack1;
public class demo1 {
public static void main(String[] args) {
int sum=0;
for(int i=1;i<=100;i++){
sum+=i;
}
System.out.println("1到100的和为:");
System.out.println(sum);
System.out.println("continue语句实现100到300间不能被3整除的数如下:");
for(int i=100;i<=300;i++){
if(i%3==0){
continue;
}
System.out.printf("%d ",i);
}
System.out.println();
System.out.println("break语句实现从1数到100,遇到78时终止:");
for(int i=1;i<=100;i++){
System.out.printf("%d ",i);
if(i==78) break;
}
}
}
3.课后作业
(1) 编写一个java应用程序,输出俄文字母表。
已知大写(小写)俄文字母表首字母为:А(а) 且俄文字母共有32个
输出:按要求输出。
源代码:
package cn.edu.nefu.pack1;
public class demo1 {
public static void main(String[] args) {
char c='а';
char c1='А';
for(int i=(int)c;i
(2) 编写一个应用程序,用户从键盘只能输入整数,程序输出这些整数的和。
输入:输入数据有多组,每组1个整型数字。
输出:对应输入整数的和。
源代码:
package cn.edu.nefu.pack1;
import java.util.Scanner;
public class demo1 {
public static void main(String[] args) {
Scanner reader=new Scanner(System.in);
long sum=0;
while(reader.hasNextInt()){
long x=reader.nextInt();
sum+=x;
System.out.println(sum);
//System.out.printf("%d",sum);
}
}
}
(3) 有一函数:当x<0时 y=-1+2x;当x=0时 y=-1;当x>0时 y=-1+3x;编写一个java应用程序,从键盘输入一个x的值,程序输出y的值。
输入:输入数据有多组,每组1个浮点型数字。
输出:对应输入浮点型的y值。
源代码:
package cn.edu.nefu.pack1;
import java.util.Scanner;
public class demo1 {
public static void main(String[] args) {
Scanner reader=new Scanner(System.in);
double x,y;
while(reader.hasNextDouble()){
x=reader.nextDouble();
if(x<0){
y=-1+2*x;
}
else if(x==0){
y=-1;
}
else{
y=-1+3*x;
}
System.out.println(y);
//System.out.printf("%d",sum);
}
}
}
(4) 编写一个java应用程序,使用while循环语句计算1~1000之间能被3和7同时整除的整数之和。
输出:按要求输出。
源代码:
package cn.edu.nefu.pack1;
public class demo1 {
public static void main(String[] args) {
int sum=0;
int i=1;
while(i<=1000){
if(i%3==0&&i%7==0){
sum+=i;
}
i++;
}
System.out.println(sum);
}
}
测试结果:23688
(5) 编写一个java应用程序,使用for循环计算8+88+888+8888+….的前10项之和。
输出:按要求输出,注意和的范围,要用long。
源代码:
package cn.edu.nefu.pack1;
public class demo1 {
public static void main(String[] args) {
long sum=8;
long a=8;
for(int i=2;i<=10;i++){
a=a*10+8;
sum+=a;
}
System.out.println(sum);
}
}
测试结果:9876543200
(6) 编写一个java应用程序,计算1!+2!+3!+...从第100项到第200项之和。 (精华部分)
输出:按要求输出。
注意:阶乘数据比较大,用正常的long型已经早已经存不下了,所以要借助于java.math.BigInterger来做。
源代码:
package cn.edu.nefu.pack1;
import java.math.BigInteger;
public class demo1 {
public static void main(String[] args) {
BigInteger sum=BigInteger.valueOf(0); //sum=0;
BigInteger zero=BigInteger.valueOf(0); //zero=0;
BigInteger one=BigInteger.valueOf(1); //one=1;
for(int j=100;j<=200;j++){
BigInteger bi=BigInteger.valueOf(1); //bi=1;
BigInteger i=BigInteger.valueOf(j); //i=j;
while(i.compareTo(zero)>0){ //while(i>0) //求i的阶乘
bi=bi.multiply(i); //bi=bi*i;
i=i.subtract(one); //i=i-1;
}
sum=sum.add(bi); //sum=sum+bi;
}
System.out.println(sum);
}
}
测试结果:
792621072814943158937574954417696054502273470568077747007887743862285047941581535541498718312275086275679893343076013862361579680670972527976009279036348551929550827607601145450876014530359530008733947699274904382825444692112993342058966668017369617374101405221613980910401559347844227172278387932925351155828685624342954436057587785914951951445917696000000000000000000000000
此次试验为直接面向过程编程,比较容易实现。特别注意的是,当数据比较大时,要把数据范围定义的比较大,防止溢出,当正常的数据范围也存不下时,则要借助于BigInteger来寻求方法;switch(n)语句中的n可以是整型或者是字符型的变量,而把String类转化为字符数组用到的语句是:char a[]=s.toCharArray();