JAVA实验一 Java语言基础

一、实验目的

掌握 Java 语言的基本语法、基本数据类型的使用方法,掌握从键盘 输入基本类型的数据,熟练运用分支、循环等语句控制程序流程。

二、实验内容

1、编写一个 Java 应用程序,用户从键盘输入十名学生的信息,至少包括姓名、年龄、出生年月日、java课程实验成绩,成绩使用浮点数,年龄使用整型,程序将输出年龄、java 课程实验成绩的平均值。提示:Scanner 对象调用nextDouble()或 nextFloat()可以获取用户从键盘输入的浮点数。

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};
从键盘读入一个整数,使用折半查找判断该整数是否在这个数组中,并将结果输出。

*3、输出 100~200 之间的所有素数。

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

*5、已知 XYZ+YZZ=532,其中 X、Y 和 Z为数字,编程求出 X,Y 和 Z 的 值。

三、实验程序源代码

1、

import java.util.Scanner;
class Student{
    
    
	public static void main(String args[])
	{
    
    
		int n=10;
		int i;
		String name[]=new String[n];
		int age[]=new int[n];
		double score[]=new double[n];
		String birthday[]=new String[n];
		int total_age=0;
		double total_score=0.0;
		int average_age=0;
		double average_score=0.0;
		Scanner stu=new Scanner(System.in);
		System.out.println("请按顺序输入学生信息:姓名 年龄 Java实验成绩 出生日期");
		for(i=0;i<n;i++){
    
    
			name[i]=stu.next();
			age[i]=stu.nextInt();
			score[i]=stu.nextDouble();
			birthday[i]=stu.next();
			total_age+=age[i];
			total_score+=score[i];
		}
		average_age=total_age/n;
		average_score=total_score/n;
		System.out.println("平均年龄为:"+average_age);
		System.out.println("平均成绩为:"+average_score);
		stu.close();
	}
}

2、

import java.util.Arrays;
import java.util.Scanner;
class Arr{
    
    
	//折半查找法(二分法)
	public static int search(int A[],int n,int key){
    
    
		int low=0,high=n-1,mid;
		if(A[low]==key)//如果关键字key与第一个数据相等,直接跳出输出low
			return low;
		if(A[high]==key)//如果关键字key与最后一个数据相等,直接跳出输出high
			return high;
		else{
    
    
			mid=(low+high)/2;
			while(low<=high){
    
    
				if(A[mid]==key)
					return mid;
				if(A[mid]<key)
					low=mid+1;
				else
					high=mid-1;
			}
			return -1;//实际上没有得到-1的输出,只是给方法search一个整型数据的返回值而已,把没有输出看作是数据不存在!
		}
	}
	public static void main(String args[]){
    
    
		int n;
		Scanner scan=new Scanner(System.in);
		System.out.print("请输入数组长度:");
		n=scan.nextInt();
		int a[]=new int[n];
		System.out.print("请输入数组元素:");
		for(int i=0;i<n;i++){
    
    
			a[i]=scan.nextInt();
		}
		Arrays.sort(a);
		System.out.print("输出排序后的数组:");
		System.out.println(Arrays.toString(a));
		int key;
		System.out.print("请输入查询的数据:");
		key=scan.nextInt();
		System.out.print("输出查询结果的位置或者查询失败(-1):");
		System.out.println(search(a,n,key));
		scan.close();
	}
}

3、

class Prime{
    
    
	public static void main(String args[]){
    
    
		boolean p=false;
		int i,j;
		for(i=100;i<201;i++){
    
    
			p=false;
			for(j=2;j<i;j++){
    
    
				if(i%j==0){
    
    
					p=true;
					break;
				}
			}
			if(!p){
    
    
				System.out.print(i+" ");//输出素数
			}
		}
	}
}

4、

class Perfect{
    
    
	public static void main(String args[]){
    
    
		for(int i=1;i<1001;i++){
    
    
			int a=0;
			for(int j=1;j<i;j++){
    
    
				if(i%j==0){
    
    
					a+=j;
				}
			}
			if(a==i){
    
    
				System.out.println(i+"是完全数");
			}
		}
	}
}

5、

扫描二维码关注公众号,回复: 15259710 查看本文章
import java.util.Scanner;
class XYZ{
    
    
	public static void main(String args[]){
    
    
		int i,j,k;
		int n;
		Scanner scan=new Scanner(System.in);
		System.out.print("输入要计算的数据:");
		n=scan.nextInt();
		for(i=1;i<10;i++){
    
    
			for(j=1;j<10;j++){
    
    
				for(k=0;k<10;k++){
    
    
					if(n==k+k+(j+k)*10+(i+j)*100){
    
    
						System.out.println("输出:X="+i+",Y="+j+",Z="+k);
					}
				}
			}
		}
	}
}

四、实验结果

1、
在这里插入图片描述

2、

(1)题目中所给数据:

在这里插入图片描述

(2)自己输入的数据:

在这里插入图片描述

(3)查询数据首(low)的数据,直接跳出,返回low:

在这里插入图片描述

(4)查询数据尾(high)的数据,直接跳出,返回high:

在这里插入图片描述

(5)查询重复数据,返回第一个重复数据的位置:

在这里插入图片描述

3、

纵向输出: 语句改为System.out.println(i);

在这里插入图片描述

横向输出: 语句改为System.out.print(i+” “);

在这里插入图片描述

4、
在这里插入图片描述

5、

(1)输入本题数据:

在这里插入图片描述

(2)输入其他数据:

在这里插入图片描述
在这里插入图片描述

但是显然并不是输入所有数据都有结果,有些数据不满足表达式就没有输出:

在这里插入图片描述

五、实验总结分析

1、在键盘中输入学生信息时出现了以下问题:

在这里插入图片描述

显示是我输错了第二个数据的数据类型,但是实际我没有输错。 后来我发现应该一行一行输入才能有正常的输出结果:

在这里插入图片描述

Scanner输出是先输入在显示。在异常处理的程序中试验了一下发现也是这样:

在这里插入图片描述

2、动态创建字符串数组和一维数组:
int n=10;//维度
String arr[]=new String[n];
int s[]=new int[n];
Double m[]=new double[n];

3、方法只能声明局部变量,对于局部变量不能使用访问权限(public、private、protected)来修饰。

4、在试验Array数组复制的用法过程中,

在这里插入图片描述

我误写了整型数据09,出现了以下错误:

在这里插入图片描述

原来Java认为以数字0开头的整数是八进制数,只允许0~7的数字,因此09是无效的。 改正之后得到正确结果:

在这里插入图片描述
在这里插入图片描述

5、查询数组中是否存在我输入的数据时,其他情况都没有问题,但是当我输入不存在的数据时,原本想要输出整型数据-1,但实际上却没有输出结果,我没有想到好的解决办法,因此将不输出结果的情况看作是数据在数组中不存在。

在这里插入图片描述

6、在输出100-200之间的素数时,我发现输出的语句不能放在最里面的循环语句内,否则输出就会重复多次,不利于查看,因此把输出语句放在第一层循环内直接输出一遍素数。

猜你喜欢

转载自blog.csdn.net/gui_bjyxszd/article/details/127812237