「Java返回图的边数」java怎么返回两个数
今天给各位分享Java返回图的边数的知识,其中也会对java怎么返回两个数进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!
本文目录一览:
- 1、已知正多边形边长及边数求面积java代码
- 2、求代码,java实验,题目如图
- 3、java返回值
- 4、用JAVA编写求解几何图形的应用程序?
- 5、java如何在方法中返回一个结构体值?
- 6、java问题,急!!
已知正多边形边长及边数求面积java代码
//首先找到正n边行的中心点O,我们把中心O与各个顶点连接起来,
//那么正n边形分成n个全等的等腰三角形,我们只需要算成其中一个面积乘以n就是总面积
//假如这个正n边形有两个相邻的顶点A和B,连接OA,OB。得到等腰三角形OAB,其中OA=OB.
//可以看出来∠AOB=360/n ,AB边的高 h=(a/2)/tan(360/2n)。其中a是正多边形的边长
public double normalPolygonArea(int n,double a){
if(n3 || a0)
return 0;
double pi = 3.14159265354; //定义π
double h =(a/2)/Math.tan(pi/n); //计算等腰三角形的高
double triangle =a*h/2; //计算三角形的面积
return triangle*n; //返回正多边形面积
}
求代码,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返回值
程序一的结构是这样的, class SquareProperties, 这个class里面有两个普通method和一个main method. 你可以把一个method理解了一个工具包,用来实现一个功能的。double computeArea(double side), 这个method的功能就是计算面积。 你输入了一个参数side, 这个method里面把计算出的面积值返回给你。 第二个是求周长的,同理。
你在main method里面调用这几个方法,就能直接实现求周长和面积的功能了。
而程序二, 则把这两个方法的内容直接混到main method里面了。
你现在可能觉得程序二这种方法更方便, 但如果你以后做一些正规的软件时, 如果把各种功能一气都放到main里面, 无法重复利用,且非常乱。 而把各种功能都分别包到一个个的method里面,需要哪个就用哪个, 非常方便。
程序二中的public static。 public是权限, 表示所有的程序,无论从哪来的,都能调用这个变量。
一般来说能不public的尽量不要。 为了安全和保密起见。
static, 静态的。意思就是说, 给这个变量单独分配一块内存空间,谁都可以调用。如果这个变量不加static, 它就不是一个静态变量。 而它在main method的外边,是无法被main里面的东西所调用的。 建议学习一下局部变量和全局变量。
这些东西我刚学JAVA的时候也非常纠结,一整个学期都没明白, 直到下学期学数据结构的时候才顿悟。 如有不懂, 可私HI我留QQ之类。
用JAVA编写求解几何图形的应用程序?
1. 抽象形状类
package com;
//抽象的形状类
public abstract class Shape{
}
2. 显示接口
package com;
//接口
public interface IDisplay{
void display(); //显示图形的基本信息
double getArea(); //计算面积
double getGirth(); //计算周长
}
3. 三角形类
package com.tri;
import com.*;
//三角形类
public class Triangle extends Shape implements IDisplay{
protected double a;
protected double b;
protected double c;
public Triangle(double a, double b, double c){
this.a = a;
this.b = b;
this.c = c;
}
@Override
public double getArea() {
double s = (a + b + c) / 2;
return Math.sqrt(s*(s-a)*(s-b)*(s-c));
}
@Override
public double getGirth() {
return this.a + this.b + this.c;
}
@Override
public void display() {
System.out.println("三角形");
System.out.println("边长:" + a + ", " + b + ", " + c);
}
}
4. 矩形类
package com.rec;
import com.*;
//矩形类
public class Rectangle extends Shape implements IDisplay {
protected double width;
protected double height;
public Rectangle(double width, double height){
this.width = width;
this.height = height;
}
@Override
public double getArea() {
return this.width * this.height;
}
@Override
public double getGirth() {
return 2 * ( this.width + this.height);
}
@Override
public void display() {
System.out.println("矩形");
System.out.println("宽:" + this.width + ", 高:" + this.height);
}
}
5. 圆类
package com.cir;
import com.*;
//圆类
public class Circle extends Shape implements IDisplay {
protected double radius;
public Circle(double radius){
this.radius = radius;
}
@Override
public double getArea() {
return Math.PI * this.radius * this.radius;
}
@Override
public double getGirth() {
return 2 * Math.PI * this.radius;
}
@Override
public void display() {
System.out.println("圆");
System.out.println("半径:" + this.radius);
}
}
6. 正多边形类
package com.mul;
import com.*;
//正多边形类
public class MulSide extends Shape implements IDisplay {
protected double side; //边长
protected int n; //边数
public MulSide(double side, int n){
this.side = side;
this.n = n;
}
@Override
public double getArea() {
return n * side * side * Math.tan((n-2) * Math.PI / (2 * n)) / 4;
}
@Override
public double getGirth() {
return this.side * this.n;
}
@Override
public void display() {
System.out.println("正多边形");
System.out.println("连长:" + this.side + ", 边数:" + this.n);
}
}
7. 主类(测试类)
package com;
import java.util.Scanner;
import com.cir.Circle;
import com.mul.MulSide;
import com.rec.Rectangle;
import com.tri.Triangle;
public class Test22 {
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
double a, b, c;
double width, height;
double radius;
double side;
int n;
IDisplay s;
System.out.println("请输入三角形的基本信息");
System.out.print("边长1:");
a = scan.nextDouble();
System.out.print("边长2:");
b = scan.nextDouble();
System.out.print("边长3:");
c = scan.nextDouble();
s = new Triangle(a, b, c);
s.display();
System.out.println("三角形的面积:" + s.getArea());
System.out.println("三角形的周长:" + s.getGirth());
System.out.println("请输入矩形的基本信息");
System.out.print("宽:");
width = scan.nextDouble();
System.out.print("高:");
height = scan.nextDouble();
s = new Rectangle(width, height);
s.display();
System.out.println("矩形的面积:" + s.getArea());
System.out.println("矩的周长:" + s.getGirth());
System.out.println("请输入圆的基本信息");
System.out.print("半径:");
radius = scan.nextDouble();
s = new Circle(radius);
s.display();
System.out.println("圆的面积:" + s.getArea());
System.out.println("圆的周长:" + s.getGirth());
System.out.println("请输入正多边形的基本信息");
System.out.print("边长:");
side = scan.nextDouble();
System.out.print("边数:");
n = scan.nextInt();
s = new MulSide(side, n);
s.display();
System.out.println("正多边形的面积:" + s.getArea());
System.out.println("正多边形的周长:" + s.getGirth());
}
}
运行测试:
请输入三角形的基本信息
边长1:3
边长2:4
边长3:5
三角形
边长:3.0, 4.0, 5.0
三角形的面积:6.0
三角形的周长:12.0
请输入矩形的基本信息
宽:3
高:4
矩形
宽:3.0, 高:4.0
矩形的面积:12.0
矩的周长:14.0
请输入圆的基本信息
半径:2
圆
半径:2.0
圆的面积:12.566370614359172
圆的周长:12.566370614359172
请输入正多边形的基本信息
边长:2
边数:6
正多边形
连长:2.0, 边数:6
正多边形的面积:10.39230484541326
正多边形的周长:12.0
java如何在方法中返回一个结构体值?
public class returnValue{
public String returnString;
public boolean returnBoolean;
}
public static returnValue compareNumbers(int randomNumber,int bumber)
{
returnValue value=new returnValue (); //注意这儿你做的没有初始化对象
if(number==randoNumber)
{
value.returnString="return number value is"+number;
value returnBoolean=true;
}
else
if(numberrandoNumber)
{
value.returnString="return value it's smaller";
value returnBoolean=false;
}
else
if(numberrandoNumber)
{
value.returnString="return value is bigger";
value returnBoolean=false;
}
return value;
} 按以上改一下 应该跟你的差不多了 不过一般来说 不要这样写
java是面向对象的语言 基本要求 封装 继承 多态..
这里你的封装不是很好
一般来说这样建类
public class returnValue{
private String returnString;
private boolean returnBoolean;
public String getReturnString()
{
return returnString;
}
public void setReturnString(String returnString ){
this.returnString =returnString ;
}
public boolean getReturnBoolean()
{
return returnBoolean;
}
public void setReturnBoolean (boolean returnBoolean){
this.returnBoolean =returnBoolean ;
}
}
在类被初始化后 需要通过set/get方法 见类中的setReturnBoolean getReturnBoolean ..不写了 手打太慢
你那个private一般来说该是public 你注意看看private public protect 这三个权限
给类赋值用set方法如setReturnBoolean 不要直接对类的属性进行操作 获得类的属性值时用get方法
public static returnValue compareNumbers(int randomNumber,int bumber)//这个方法在一个类里面啊 注意静态方法和非静态方法的使用
{
returnValue value=new returnValue (); //初始化
if(number==randoNumber)
{
value.setReturnString("return number value is"+number);
value setReturnBoolean(true);
}
else if(numberrandoNumber)
{
value.setReturnString("return value it's smaller");
value setReturnBoolean(false);
}
//剩下的你自己填吧
return value;
}
多看看教材 多读读代码 多练习下
如果我没看错你以前是学C/C++的吧
手写的可能拼写有问题 凑和着看吧
java问题,急!!
//抽象类Figure
abstract class Figure {
private int numOfSide;
abstract int eara();
abstract int girth();
public int getNumOfSide() {
return numOfSide;
}
public void setNumOfSide(int numOfSide) {
this.numOfSide = numOfSide;
}
}
abstract class Rectangle extends Figure {
abstract int eara();
abstract int girth();
}
abstract class Triangle extends Figure {
abstract int eara();
abstract int girth();
}
关于Java返回图的边数和java怎么返回两个数的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。
发布于:2022-11-29,除非注明,否则均为
原创文章,转载请注明出处。