实验一 Java语言基础

实验内容

本文章禁止转载,自己撰写,仅供学习参考之用
1. 编写一个Java应用程序,用户从键盘输入十名学生的信息,至少包括姓名、年龄、出生年月日、java课程实验成绩,成绩使用浮点数,年龄使用整型,程序将输出年龄、java课程实验成绩的平均值。(提示:Scanner对象调用nextDouble()或nextFloat()可以获取用户从键盘输入的浮点数
代码实现

import java.util.Scanner;

public class Student {
	/**
	 * @param args
	 */
	//定义姓名、年龄、出生年月、JAVA成绩成员变量
	private String name;
	private String sexy;
	private int age;
	private int year;
	private int month;
	private int day;
	private float grade;
	
	//定义Student类构造函数
	public Student(String name, String sexy,int age, int year, int month, int day,
			float grade) {
		super();
		this.name = name;
		this.age = age;
		this.year = year;
		this.month = month;
		this.day = day;
		this.grade = grade;
	}
	
	//获得年龄值
	public int getAge(){
		return age;
	}
	
	//获得JAVA分数
	public float getGrade(){
		return grade;
	}
	
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		//定义Student类对象数组
		Student student[]=new Student[10];
		Scanner scanner=new Scanner(System.in);
		
		//定义变量,用于接收输入的学生信息数据
		String name;
		String sexy;
		int age;
		int year;
		int month;
		int day;
		float grade;
		
		//输入学生的姓名、年龄、出生年月日、JAVA成绩
		for(int i=0;i<student.length;i++){
			System.out.print("请输入第"+(i+1)+"个学生的姓名:");
			name=scanner.nextLine();
			System.out.print("请输入第"+(i+1)+"个学生的性别:");
			sexy=scanner.nextLine();
			System.out.print("请输入第"+(i+1)+"个学生的年龄:");
			age=scanner.nextInt();
			System.out.print("请输入第"+(i+1)+"个学生的出生年月日:");
			year=scanner.nextInt();
			month=scanner.nextInt();
			day=scanner.nextInt();
			if(age==2018-year){
				System.out.print("请输入第"+(i+1)+"个学生的java成绩:");
				grade=scanner.nextFloat();
				student[i]=new Student(name,sexy,age,year,month,day,grade);
				//接收最后的回车键
				scanner.nextLine();
			}else{
				System.out.println("年龄或出生日期有误,请重新输入!
");
scanner.nextLine();
i--;

			}
		}
		
		scanner.close();
		int averAge=0;
		float averGrade=0;
		
		//求学生年龄的平均值
		for(int i=0;i<student.length;i++){
			averAge+=student[i].getAge();
			if(i==student.length-1){
				System.out.println("学生的平均年龄为:"+averAge/student.length);
			}
		}
		
		//求学生的JAVA成绩平均值
		for(int i=0;i<student.length;i++){
			averGrade+=student[i].getGrade();
			if(i==student.length-1){
				System.out.println("学生的java平均成绩为"+averGrade/student.length);
			}
		}
	}
}

运行测试效果
【输入数据正确时】
输入数据正确时
【当年龄与输入日期不符时】
当年龄与输入日期不符时
2、使用Arrays类实现数组排序:使用java.util包中的Arrays类的类方法public static void sort(double a[])可以把参数a指定的double类型数组按升序排序;public static void sort(double a[], int start , int end)可以把参数a指定的double类型数组中从位置start到end位置的值按升序排序。
给定数组 int a[]={12,34,9,-23,45,6,90,123,19,45,34}; 从键盘读入一个整数,使用折半查找判断该整数是否在这个数组中,并将结果输出。

代码实现

package second;

import java.util.Arrays;
import java.util.Scanner;

public class BinarySearch {

	/**
	 * @param args
	 */
//二分查找的算法,不直接调用函数时使用
//	void binarySearch(int a[],int key) {
//
//	    //数组左端
//	    int left = 0;
//	    //数组右端
//	    int right = a.length - 1;
//	    //中间
//	    int mid;
//
//	    //在左右指针交换之前,查找还没结束
//	    while (left <= right) {
//
//	        //更新中间的值
//	        mid = (left + right) / 2;
//
//	        //查找成功
//	        if (a[mid] == key) {
//	        	System.out.println("元素存在!");
//	            return;
//	        }
//
//	        //若还没有找到,改变左右区间继续寻找
//	        if (a[mid] < key)
//	            left = mid + 1;
//	        if (a[mid] > key)
//	            right = mid - 1;
//
//	    }
//	    System.out.println("元素不存在,请重新输入!");
//	    return;
//
//	}
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		BinarySearch binary=new BinarySearch();
		
		//定义数组
		int a[]={
				12,34,9,-23,45,6,90,123,19,45,34
		};
		
		//对数组进行排序
		Arrays.sort(a);
		
		System.out.print("请输入要进行查询的整数:");
		Scanner scanner=new Scanner(System.in);
		int key=scanner.nextInt();
		
		//使用binarySearch对输入内容进行二分查找
		if(Arrays.binarySearch(a, key)>=0){
			System.out.println("元素存在!");
		}else{
			System.out.println("元素不存在,请重新输入!");
		}
//使用自定义的函数时的查找方法		
//		binary.binarySearch(a, key);
		
		System.out.println("排序后的数组为:");		
		for(int i=0;i<a.length;i++){
			System.out.print(a[i]+" ");
		}
	}
}

运行结果
【输入数据存在】
在这里插入图片描述
【输入数据不存在】
输入数据不存在

3、输出100~200之间的所有素数。
代码实现

package third;

public class Prime {

	/**
	 * @param args
	 */
	//定义素数查找函数
	public  int isPrime(int num){
		//排除偶数
		if(num/2==0){
			return 0;
		}
		//遍历查找
		for(int i=3;i<=Math.sqrt(num);i+=2){
				if(num%i==0) return 0;
		}
		//对于1的情况
		return 1;
	}
	
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		//定义对象
		Prime prime=new Prime();
		
		System.out.println("100-200内的素数为:");
		int num=0;
		
		for(int i=100;i<=200;i++){
			if(prime.isPrime(i)!=0){
				System.out.print(i+" ");
				num++;
				//每10个为一行
				if(num%10==0){
					System.out.println();
				}
			}
		}
	}
}
运行结果:
100-200内的素数为:
101 103 104 106 107 109 113 116 118 122 
124 127 128 131 134 136 137 139 142 146 
148 149 151 152 157 158 163 164 166 167 
172 173 178 179 181 184 188 191 193 194 
197 199 
运行截图:

4、采用for循环求1至1000之内的所有“完全数”。所谓“完全数”是指一个数,恰好等于它的因子之和。例如,6是一个完全数,因为6的因子为1、2、3,而6=1+2+3。
代码实现:
package forth;

public class PerfectNumber {

	/**
	 * @param args
	 */
	//定义完美数查找函数
	public static boolean isPerfectNumber(int num)
	{
		//排除小于0的情况
		if(num<=0){
			return false;
		}
		
		int sum=0;
		
		for(int i=1;i<num;i++){
			//如果是该数的因子则加入SUM
			if(num%i==0){
				sum+=i;
			}
			//如果结果已经大于该数则不再继续计算
			if(sum>num){
				return false;
			}
		}
		return sum==num;
	}
	
	
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		
		System.out.println("1-1000中的完美数为:");
		
		//遍历求完美数个数
		for(int i=1;i<1000;i++){
			if(PerfectNumber.isPerfectNumber(i)){
				System.out.println(i);
			}
		}
	}
}
运行结果:
1-1000中的完美数为:
6
28
496
运行截图:

4、已知XYZ+YZZ=532,其中X、Y和Z为数字,编程求出X,Y和Z的值。
代码实现:
package fifth;

public class Calculate {

	/**
	 * @param args
	 */
	//定义计算XYZ+YZZ=?的计算函数
	public void equation(int x){
		for(int X=0;X<=9;X++){
			for(int Y=0;Y<=9;Y++){
				for(int Z=0;Z<=9;Z++){
					if(100*X+10*Y+Z+100*Y+10*Z+Z==x){
						System.out.println("X="+X+",Y="+Y+",Z="+Z);
					}
				}
			}
		}
	}
	
	
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		//定义对象
		Calculate calculate=new Calculate();
		
		//输出结果
		System.out.println("XYZ+YZZ=532的计算结果为:");
		calculate.equation(532);
	}
}

运行结果:
运行截图

猜你喜欢

转载自blog.csdn.net/weixin_42260102/article/details/86563291