JAVA实验一程序控制语句和JAVA编译器的使用

实验 一

实验名称:程序控制语句和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<c+32;i++){
           System.out.printf(" "+(char)i);
       }
       System.out.println();
       for(int i=(int)c1;i<c1+32;i++){
           System.out.printf(" "+(char)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();

五、指导教师意见及成绩

 

 

                                

你可能感兴趣的:(JAVA实验报告)