Java实验报告(基础练习、选择循环、数组、字符串及类和对象)

目录

一、Java基础练习

二、Java选择和循环

三、Java数组练习

四、Java类和对象练习

五、Java字符串练习 


一、Java基础练习

1、用Java编写程序,从键盘上输入一个double型的华氏温度,然后将其转换为摄氏温度输出。

package package1;
import java.util.*;
public class class1 {
public static void main(String[] args) {
// TODO Auto- generated method stub
Scanner in=new Scanner(System.in);
System.out.println("请输入华氏度: ");
double g=in.nextFloat();
double w=(5.0/9)*(g-32);
System.out.println(+g+"华氏度"+"对应的摄氏度为: "+w);
}
}

2、 编写程序,从键盘输入a、b、c的值,计算下列表达式 (开根用Math.sqrt()方法)。 

package package1;
import java.util.*;
public class class2 {
public static void main(String[] args) {
// TODO Auto- generated method stub
Scanner.gsq=new Scanner(System.in) ;
System.out.println("Please input the number of a,b,c : ");
int a=gsq.nextInt();
int b=gsq.nextInt();
int c=gsq.nextInt();
double result=(((-1)*b)+Math.sqrt(b*b-4*a*c))/(2*a);
if(b*b-4*a*c<0){
System.out.println("the number doesn't exit");
}e1se{
System.out.println("The result is : "+result);
}
}
}

3、编写程序读取一个0- 1000的整数,计算各位数之和。例如,输入923,则输出各位数之和为14。

package package1;
import java.util.*;
public class class3 {
public static void main(String[] args) {
// T0DO Auto- generated method stub
Scanner gg=new Scanner(System.in);
System.out.println("Please input the number between 0 and 1000: ");
int t=gg.nextInt();
while(t < 0 || t > 1000){
System.out.println("The number you input is invalid,please input again : ");
t=gg.nextInt();
int sum=0,i,a=t;
while(a!=0){
i=a%10;
a/=10;
sum+=i;
System.out.println(" the sum of”+t+”is "+sum);
}
}|

二、Java选择和循环

1、编写程序,要求用户从键盘输入一个double型数,输出该数的整数部分和小数部分。

package package2;
import java.util.*;
public class class1 {
public static void main(String[] args) {
System.out.println( "请输入一-个double数值: ");
Scanner gg =new Scanner(System.in);    
String a=gg.nextLine();
int tmp=a.index0f('.');
System.out.println( "整数部分为: "+a. substring(0, tmp));
System.out.println("小数部分为: "+a. substring(tmp+1));
}|

2、编写程序,从键盘输入一个正整数,判断是奇数还是偶数。

package package2;
import java.util.*;    
public class class2 {
publ1ic static void main(String[] args) {
// TODO Auto- generated method stub
System.out.print1n("请输入一个整数: ");
System.out.println();
Scanner gg = new Scanner(System.in);
int number = gg.nextInt();
if( (number&1) == 1){
System.out.println("您输入的是奇数!");
}else{
System.out.println("您输入的是偶数!");
}
}|
    

3、编写程序,要求用户从键盘输入4个正整数,找出其中最大值和最小值并打印输出。

package package2; .
import java.util.*;
public class class3 {
public static void main(String[] args) {
int a[]=new int [4];
Scanner input = new Scanner(System.in);
System.out.println("Please input four numbers: ");
for (int i=0;i<4;i++)
a[i]=input.nextInt();
int min=a[0];
int max=a[0] ;
for int i=0; i<4;i++)
if (a[i]<min){
min=a[i];
}
if (a[i]>max){
max=a[i];
}
System.out.println("The max number is " +max);
System.out.println("The min number is " +min);
}
}

4 、编写一个Java应用程序,输入1-9999之间的数字,判断是否为回文数。

package package2;
import java.util.*;
public class class4 {
public static void main(String[] args) {
// TODO Auto-generated method stub
Scanner gg=new Scanner(System.in);
System.out.println("请输入1~9999之间的数字: ");
int a=gg.nextInt();
int b=0,c=0,d=a;
while(a!=0){
c=a%10; .
b=b*10+c;
a=a/10;
}
if(b==d){
System.out.println("该数为回文数! ");
}
else{
System.out.println("该数不是回文数! ");
}

5、编写程序,实现最大公约数程序

package package2;
import java.util.*;
public class class5{
public static void main(String[] args) {
Scanner gg= new Scanner(System.in);
System.out.println("请输入两个整数: ");
int a=gg.nextInt();
int b=gg.nextInt();
for(int c=Math.max(a,b);c>=1;c--){
if(a%c==0 && b%c==0){
System.out.println(" 最大公约数为: "+c);
break ;
}

 6、编写程序,要求用户从键盘上输入一个月份,输入该年是否为闰年。符合下面两个条件之一的年份即为闰年;(能被4整除,但不能被100整除并且能被400整除。

package package2;
import java.util.*;
public class class6 {
public static void main(String[] args) {
Scanner gg = new Scanner(System.in);
System.out.println("请输入今夕是何年: ");
int y=gg.nextInt();
if((y%4==0 && y%100!=0) || y%400==0) {
System.out.println(y+"是闰年");
else
System.out.println(y+"不是闰年");
}
}

 7、编写程序,计算并输出1-1000之间含有7或者是7的倍数的整数之和及个数。

package package2;
import java.util.*;
public class class7 {
public static void main(String[ ] args) {
int s=0,c=0;
for(int i=1;i<=1000;i++){
if(i%7==0||i%10==7||(i/100)%10==7||(i/10)%10==7){
S+=i;  
C++;
System.out.println("1-1000之间含有7或者是7的倍数的整数之和及个数分别是"+s+","+c+"个");
}
}

三、Java数组练习

1、随机生成10个1-100之间的整数。存入到一个数组中。输出该数组的最大值、最小值、平均值和所有数组元素的和。

package package4;
public class class1;
public static void main(String[] args) {
int [] a=new int [10];
int sum=0, max=0, min=101;
System.out.println("随机生成的十个数字为: ");
for(int i=0;i<10;i++) {
a[i]=(int)(Math.random()*100)+1;//随机生成10个1-100的数
System.out.print(+a[i]+"、");
for(int i=0;i<10;i++) {
sum+=a[i];
if(a[i]<min) //比较最小值
min=a[i];
else if(a[i]>max)
max=a[i]; //比较最大值
System.out.println(“该数组中最大值为" +max+" ,最小值为“+min+" ,数值总和为"+sum+" ,平均值为"+(sum)/10.0);
}
}

2、编写程序, 定义一个数组,并随机生成0-100之间的数.给它赋值,然后将值为0的项去掉,输出新数组。

package package4;
public class class3 {
public static void main(String[] args) {
// TODO Auto- generated method stub
int [] a=new int [7]; //定 义随机生成7个数
int k=0;
System.out.println("原来的数组为: ");
for(int i=0;i<a.length;i++) {
a[i]=(int) (Math. random()*100);
for(int i=0;i<a.length-k;i++) {
System.out.print(a[i]+" ");
}
for(int j=0;j<a.length;j++) {
if(a[j]==0) {
k++;
for(int t=j;t<a.length-1;t++)
a[t]=a[t+1];
}
System.out.println("\n重新生成的数组为: ");
for(int i=0;i<a.length-k;i++) {
System.out.print(a[i]+"“);
System.out.println("\n共去掉"+k+"个0值");
}
}

3、编写程序、完成以下功能:

1)输入20个整数到数组中:

2)使用冒泡法对20个数按从小到大排序,输出排序后的数组:

3).输入一个整数X,在数组中用二分法查找X.找到输出X在数组中的下标,找不到输出-1。

package package4;
import java.util.Scanner;
public class class2 {
public static void main(String[] args) {
int [] a=new int[20];//定 义数组存放20个数
int gg;
System.out.print1n("生成的数组为: ");
for(int i=0; i<a.length;i++) {
a[i]=(int)(Math.random()*100);//随机生成20个数
System.out.print(a[i]+" ");
//冒泡排序
for(int i=0; i<a.1ength-1;i++) {
for(int j=0;j<a.length-1-i;j++) {
if(a[j]>a[j+1])团
gg=a[j];
a[j]=a[j+1]; 
a[j+1]=gg;
}|
}
//输出排序后的数组
System.out.println("\n排序后的顺序: ");
for(int i=0;i<a.length;i++)
System.out.print(a[i]+" ");

//二分法查找X
int p=0,1=a.length-1, k=0;
Scanner in=new Scanner(System. in);
System.out.println("\n请输入一个0~100的整数: ");
int t=in.nextInt();
while(1>=0) {
k=(p+1)/2;
if(t<a[k])
1=k-1;
else if(t==a[k]) {
System.out.println("该数所处的位置为: a["+k+"]");
break;
}else
p=k+1;
if(t!=a[k])
System.out.println( -1);
}
}

运行程序并检测,输入数字属于该数组时和不属于该数组时:

四、Java类和对象练习

1、定义一个名为Person的类,其中含有一个String类型的成员变量和一个int类型的成员变量,分别为这两个变量定义访向方法和修改方法。另外再为该类定义一个名为speak的方法,输出其成员变量的值。画出该类的UML图,编写程序测试该类的所有方法。

 (1)、UML图如下图所示:

(2)、编写程序如下:

package package3;
import java.util.*;
public class person {
String name;
int height;
public String getName() {
return name ;
}
public void setName(String name) {
this.name = name; .
}
public int getheight() {
return height;
}
public void setheight(int height) {
this.height = height;
public void set(String name, int height){
this.name=name;
this.height=height;
}
public void speak(){
System.out.print(name+" "+height);

public static void main(String[] args) {
person a=new person() ;
a.set("王帅",178);
a.speak();
}

2、定义一个名为Circle的类表示圆,定义求圆的面积和周长的方法,为其成员变量定义访问和修改方法(使用构造方法)。画出该类的UML图,编写程序测试该类的所有方法。

(1)画出UML图如下图所示:

(2)首先创建Circle类创建方法,代码如下图所示:

package package3;
public class Circle {
private double r;
public double getR() {
return r;
public void setR(double r) {
this.r = r;
}
public void setArea() {
System.out.println("面积为"+3.14*r*r);
public void setLength() {
System.out.println("周长为"+2*3.14*r);

(3)创建test类来调用输出,代码如下图所示:

package package3;
public class test {
public static void main(String[] args) {
Circle c=new Circle();
c.setR(2);
System.out.println("半径为"+c.getR());
c.setArea();
C.setLength();|
}
}

 (4)运行程序并检测:   

3、定义一个表示圆的类Circle,构建合理的方法和变量;定义一个名为Cylinder类表示圆柱,它继承Circle类,要求定义一个变量height表示圆柱高度。覆盖getArea()方法求圆柱的表面积,定义getVolume()方法求圆柱体积。定义默认构造方法和带radius和height两个参数的构造方法。编写测试程序,提示用户输入圆柱的底面圆的半径和高度,程序创建一个圆柱对象,计算并输出圆柱表面积和体积。用UML图画出类及其关系。

     (1)画出UML图:

      (2)编写父类Circle类,代码如下:

package day1;

import java.util.Scanner;

public class Circle {
	double radius;
	public double area() {
		return radius*radius*3.14;	
	}
	public double getRadius() {
		return radius;
	}
	public void setRadius() {
		System.out.println("请输入底面面的半径:");
		Scanner sc =new Scanner(System.in);
		radius=sc.nextDouble();
		
	}

}

   (3). 编写子类Cylinder继承父类Circle类,具体代码如下图所示:

package day1;

import java.util.Scanner;

public class Cylinder extends Circle {
	double height;
	public double getLength() {
		return 2*3.14*radius;
		
	}
	public double getVolume() {
		return height*area();
		
	}
	public double getArea() {
		return 2*area()+height*getLength();
		
	}
	
	public double getHeight() {
		return height;
	}
	public void setHeight() {
		System.out.println("请输入圆柱的高:");
		Scanner sc =new Scanner(System.in);
		height=sc.nextDouble();
	}
	public static void main(String[] args) {
		Cylinder a=new Cylinder();
		a.setRadius();
		a.setHeight();
		System.out.println("圆柱的表面积为:"+a.getArea());
		System.out.println("圆柱的体积为:"+a.getVolume());
			}
}

    (4). 运行代码并检测:

4、利用继承性与派生类来管理学生和教师档案。假设要管理下述几类人员的如下一些数据。

    teacher(教师)类:姓名、性别、年龄、职称、担任课程;

    student(学生)类:姓名、性别、年龄、学号、系别;

    gradstudent(研究生)类:姓名、性别、年龄、学号、系别、导师。

要求每个类只设立构造函数以及显示类对象数据的成员函数。编写主函数,说明有关类对象,并对其类成员函数进行简单测试。用UML图画出类及其关系。

(1)画出UML图:

 (2).编写父类Person类,代码如下所示:

package day1;
public class Person {
	public String name;
	public String sex;
	public int age;
	public void showInfo() {
		System.out.println("姓名:"+name);
		System.out.println("性别:"+sex);
		System.out.println("年龄:"+age);
	}
}

(3).编写Teacher类继承person类,代码如下图所示:

package day1;
public class Teacher extends Person{
	String name="王刚";
	String sex="男";
	int age=23;
	String job="班主任";
	String project="软件工程";
	public void showInfo() {		
		System.out.println("姓名:"+name);
		System.out.println("性别:"+sex);
		System.out.println("年龄:"+age);
		System.out.println("职称:"+job);
		System.out.println("担任课程:"+project);
	}	
public static void main(String[] args) {
	Teacher teach =new Teacher();
	teach.showInfo();	
}
}

(4)编写Student类继承Person类,代码如下图所示:

package day1;
public class Student extends Person{
	String name="小明";
	String sex="男";
	int age=19;
	String number="20173344134";
	String department="物联网";
	public void showInfo() {
		System.out.println("姓名:"+name);
		System.out.println("性别:"+sex);
		System.out.println("年龄:"+age);
		System.out.println("学号:"+number);
		System.out.println("系别:"+department);
	}
		public static void main(String[] args) {
			Student stu =new Student();
			stu.showInfo();			
}
	}

(5)编写Gradstudent继承Student类,代码如下图所示:

package day1;
public class Gradstudent extends Student{
	String name="老王";
	String sex="男";
	int age=19;
	String number="20173344134";
	String department="物联网";
	String teacher="王刚";
	public void showInfo() {		
		System.out.println("姓名:"+name);
		System.out.println("性别:"+sex);
		System.out.println("年龄:"+age);
		System.out.println("学号:"+number);
		System.out.println("系别:"+department);
		System.out.println("导师:"+teacher);

}
	public static void main(String[] args) {	
		Gradstudent stu =new Gradstudent();
		stu.showInfo();			
}
}

(6)运行程序并检测:

5、设计一个汽车类,包含一个表示速度的成员变量,表示启动,加速,刹车的方法,再设计一个公共汽车类继承自汽车类,需要有表示乘客数量的成员变量,另外定义乘客上车和下车方法,编写测试这两个类的使用。(本程序比较简单,主要用来理解子类和继承,方法大家可以自己定义!)

(1)编写Car父类,定义变量和方法,如下图所示:

package day1;
public class Car {
	public double speed;
	public void start() {
		System.out.println("车辆开始启动!");		
	}
    public void speedUp() {
    	System.out.println("车辆开始加速!");
	}
     public void stop() {
    	 System.out.println("车辆开始刹车!");
}	
}

(2)编写publicCar类继承Car,代码如下图所示:

package day1;
public class publicCar extends Car {
	int number;
	void getIn() {
		System.out.println("乘客上车!");
		
	}
	void getOff() {
		System.out.println("乘客下车!");
	}
	public static void main(String[] args) {
		publicCar c=new publicCar();
		c.start();
		c.speedUp();
		c.stop();
		c.getIn();
		c.getOff();}
}

(3)运行程序并检测:

五、Java字符串练习 

 1、编写程序,输入一句话,将输入的每个单词按字符串从小到大的顺序排序后输出

package test56;
import java.util.Scanner;
public class Wordsorts {
	 public static void main(String[] args) {
	      	char[] str=new char[100];
	        char temp;
	        String string= null;
	        Scanner sc=new Scanner(System.in);
	        System.out.println("输入一个字符串:");
	        string=sc.next();
	        str=string.toCharArray();
	            for(int i=0;i<string.length();i++)//排序
	            for(int j=string.length()-1;j>i;j--)
	            {
	                if(str[j]<=str[j-1])
	                {
	                    temp=str[j];
	                    str[j]=str[j-1];
	                    str[j-1]=temp;
	                }
	            }
	            System.out.println(str);
	            sc.close();
	    }
}

2、编写一个加密程序,要求从键盘输入一个字符串, 然后输出加密后的字符串。加密规则是对每个字符串转换为下一个字母表示, 原来是a转换为b.原来是B转换为C.小写的转换为小写的a,大写的Z转换为大写的A。

package test56;
import java.util.Scanner;
public class Password {
	public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        System.out.println("请输入一个字符串:");
        String s = sc.nextLine();
        char[] ch = s.toCharArray();
        System.out.println("加密后的字符串为:");
        for (int i = 0; i < ch.length; i++) {
            if (ch[i] >= 'A' && ch[i] <= 'Y') {
                ch[i] = (char) (ch[i] + 1);
                System.out.print(ch[i]);
            } else if (ch[i] == 'Z') {
                System.out.print('A');
            }
            else if (ch[i] >= 'a' && ch[i] <= 'y') {
                ch[i] = (char) (ch[i] + 1);
                System.out.print(ch[i]);
            } else {
                System.out.print('a');
            }

        }
    }
}
发布了16 篇原创文章 · 获赞 6 · 访问量 8202

猜你喜欢

转载自blog.csdn.net/Until_U/article/details/104737632