「java实验题目」java实验一实验报告
今天给各位分享java实验题目的知识,其中也会对java实验一实验报告进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!
本文目录一览:
- 1、Java实验题目:求若干个整数的平均值
- 2、求代码,java实验,题目如图
- 3、java实验题目用数组放坐标。。。
- 4、求解一道Java实验题,给出一段代码,要求把该代码补充完整使其可以运行,具体要求如下
Java实验题目:求若干个整数的平均值
// 题目给的有点模糊,可根据情况作修改
int sum = 0;
int arr[] = new arr[100];
for (int i = 0; i arr.length; i ++) {
arr[i] = (int)(Math.random * 100);
sum += arr[i];
}
System.out.println("avg:" + ((float)sum / arr.length));
求代码,java实验,题目如图
import java.util.Scanner;
import java.util.Stack;
public class DFS
{
// 存储节点信息
private char[] vertices;
// 存储边信息(邻接矩阵)
private int[][] arcs;
// 图的节点数
private int vexnum;
// 记录节点是否已被遍历
private boolean[] visited;
// 初始化
public DFS(int n)
{
vexnum = n;
vertices = new char[n];
arcs = new int[n][n];
visited = new boolean[n];
for(int i = 0; i vexnum; i++)
{
for(int j = 0; j vexnum; j++)
{
arcs[i][j] = 0;
}
}
}
// 添加边(无向图)
public void addEdge(int i, int j)
{
// 边的头尾不能为同一节点
if(i == j)
return;
arcs[i - 1][j - 1] = 1;
arcs[j - 1][i - 1] = 1;
}
// 设置节点集
public void setVertices(char[] vertices)
{
this.vertices = vertices;
}
// 设置节点访问标记
public void setVisited(boolean[] visited)
{
this.visited = visited;
}
// 打印遍历节点
public void visit(int i)
{
System.out.print(vertices[i] + " ");
}
// 从第i个节点开始深度优先遍历
private void traverse(int i)
{
// 标记第i个节点已遍历
visited[i] = true;
// 打印当前遍历的节点
visit(i);
// 遍历邻接矩阵中第i个节点的直接联通关系
for(int j = 0; j vexnum; j++)
{
// 目标节点与当前节点直接联通,并且该节点还没有被访问,递归
if(arcs[i][j] == 1 visited[j] == false)
{
traverse(j);
}
}
}
// 图的深度优先遍历(递归)
public void DFSTraverse(int start)
{
// 初始化节点遍历标记
for(int i = 0; i vexnum; i++)
{
visited[i] = false;
}
// 从没有被遍历的节点开始深度遍历
for(int i = start - 1; i vexnum; i++)
{
if(visited[i] == false)
{
// 若是连通图,只会执行一次
traverse(i);
}
}
}
// 图的深度优先遍历(非递归)
public void DFSTraverse2(int start)
{
// 初始化节点遍历标记
for(int i = 0; i vexnum; i++)
{
visited[i] = false;
}
StackInteger s = new StackInteger();
for(int i = start - 1; i vexnum; i++)
{
if(!visited[i])
{
// 连通子图起始节点
s.add(i);
do
{
// 出栈
int curr = s.pop();
// 如果该节点还没有被遍历,则遍历该节点并将子节点入栈
if(visited[curr] == false)
{
// 遍历并打印
visit(curr);
visited[curr] = true;
// 没遍历的子节点入栈
for(int j = vexnum - 1; j = 0; j--)
{
if(arcs[curr][j] == 1 visited[j] == false)
{
s.add(j);
}
}
}
} while(!s.isEmpty());
}
}
}
public static void main(String[] args)
{
Scanner sc = new Scanner(System.in);
int N, M, S;
while(true)
{
System.out.println("输入N M S,分别表示图G的结点数,边数,搜索的起点:");
String line = sc.nextLine();
if(!line.matches("^\\s*([1-9]\\d?|100)(\\s+([1-9]\\d?|100)){2}\\s*$"))
{
System.out.print("输入错误,");
continue;
}
String[] arr = line.trim().split("\\s+");
N = Integer.parseInt(arr[0]);
M = Integer.parseInt(arr[1]);
S = Integer.parseInt(arr[2]);
break;
}
DFS g = new DFS(N);
char[] vertices = new char[N];
for(int i = 0; i N; i++)
{
vertices[i] = (i + 1 + "").charAt(0);
}
g.setVertices(vertices);
for(int m = 0; m M; m++)
{
System.out.println("输入图G的第" + (m + 1) + "条边,格式为“i j”,其中i,j为结点编号(范围是1~N)");
String line = sc.nextLine();
if(!line.matches("^\\s*([1-9]\\d?|100)\\s+([1-9]\\d?|100)\\s*$"))
{
System.out.print("输入错误,");
m--;
continue;
}
String[] arr = line.trim().split("\\s+");
int i = Integer.parseInt(arr[0]);
int j = Integer.parseInt(arr[1]);
g.addEdge(i, j);
}
sc.close();
System.out.print("深度优先遍历(递归):");
g.DFSTraverse(S);
System.out.println();
System.out.print("深度优先遍历(非递归):");
g.DFSTraverse2(S);
}
}
java实验题目用数组放坐标。。。
import java.util.Random;
public class Distance {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
// 准备100个点
int[][] array = new int[100][2];
Random ran = new Random();
// 随机生成100个点
for (int i = 0; i array.length; i++) {
int[] point = new int[2];
point[0] = ran.nextInt(1000);
point[1] = ran.nextInt(1000);
// 随机生成一个点
array[i] = point;
System.out.println("点" + i + ":(" + point[0] + "," + point[1] + ")");
}
showMinusDisPoint(array);
}
/**
* 求最近距离的两点
* @param array
*/
public static void showMinusDisPoint(int[][] array) {
int fstIndex = 0;
int secIndex = 1;
// 初始化距离
double minDis = getDistance(array[fstIndex], array[secIndex]);
for (int i = 0; i array.length; i++) {
for (int j = 0; j array.length; j++) {
if (j == i) {
continue;
}
double dis = getDistance(array[i], array[j]);
if (dis minDis) {
// 如果当前两个点的距离小于存储的距离,则替换
minDis = dis;
fstIndex = i;
secIndex = j;
}
}
}
System.out.println("第一个点的编号:" + fstIndex + " (" + array[fstIndex][0] + "," + array[fstIndex][1] + ")");
System.out.println("第二个点的编号:" + secIndex + " (" + array[secIndex][0] + "," + array[secIndex][1] + ")");
System.out.println("最小距离是:" + minDis);
}
/**
* 求两点的距离
* @param p1
* @param p2
* @return
*/
public static double getDistance(int[] p1, int[] p2) {
return Math.sqrt((p1[0] - p2[0]) * (p1[0] - p2[0]) + (p1[1] - p2[1])
* (p1[1] - p2[1]));
}
}
// 随机生成100个点,求最短距离,供参考
求解一道Java实验题,给出一段代码,要求把该代码补充完整使其可以运行,具体要求如下
package xinguan;
abstract class Operation{ //抽象类
public static double numberA= 0;
public static double numberB = 0;
abstract double getResult(); //抽象方法
}
class OperationADD extends Operation{
@Override
double getResult() {
return numberA+numberB;
}
}
class OperationSUB extends Operation{
@Override
double getResult() {
return numberA-numberB;
}
}
class OperationMUL extends Operation{
@Override
double getResult() {
return numberA*numberB;
}
}
class OperationDIV extends Operation{
@Override
double getResult() {
return numberA/numberB;
}
}
class OperationFactory{
public static Operation createOperate(char operate){
Operation oper = null;
switch (operate){
case'+':
oper= new OperationADD();
break;
case'-':
oper= new OperationSUB();
break;
case'*':
oper= new OperationMUL();
break;
case'/':
oper= new OperationDIV();
break;
}
return oper;
}
}
public class CalculateDemo {
/**
* @param args
*/
public static void main(String[] args) {
Operation operADD = OperationFactory.createOperate('+');
Operation operSUB = OperationFactory.createOperate('-');
Operation operMUL = OperationFactory.createOperate('*');
Operation operDIV = OperationFactory.createOperate('/');
operADD.numberA = 15.0;
operADD.numberB = 3;
System.out.println(operADD.getResult());
System.out.println(operSUB.getResult());
System.out.println(operMUL.getResult());
System.out.println(operDIV.getResult());
}
}
因为抽象类是静态方法 所以 给operADD 那个对象赋值一次就能获得所有结果。要是去掉static 那么就需要每个对象 赋值。现在基本满足你的要求了。
java实验题目的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于java实验一实验报告、java实验题目的信息别忘了在本站进行查找喔。