java - 将 Double.MAX_VALUE 分配给变量时有什么用?(这里是初学者)
问题描述
据我了解,当将 Double.MAX_VALUE 分配给变量 x 时,x = 2147483647。我的问题是,为什么要将这样的值分配给变量?如果我从下面的代码中删除它会发生什么?下面的代码取自https://java2blog.com/dijkstra-java/,在 java 中实现了 Dijkstra 算法。它代表 Vertex 类。
import java.util.ArrayList;
import java.util.List;
public class Vertex implements Comparable<Vertex> {
private String name;
private List<Edge> adjacenciesList;
private boolean visited;
private Vertex predecessor;
private double distance = Double.MAX_VALUE;
public Vertex(String name) {
this.name = name;
this.adjacenciesList = new ArrayList<>();
}
public void addNeighbour(Edge edge) {
this.adjacenciesList.add(edge);
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public List<Edge> getAdjacenciesList() {
return adjacenciesList;
}
public void setAdjacenciesList(List<Edge> adjacenciesList) {
this.adjacenciesList = adjacenciesList;
}
public boolean isVisited() {
return visited;
}
public void setVisited(boolean visited) {
this.visited = visited;
}
public Vertex getPredecessor() {
return predecessor;
}
public void setPredecessor(Vertex predecessor) {
this.predecessor = predecessor;
}
public double getDistance() {
return distance;
}
public void setDistance(double distance) {
this.distance = distance;
}
@Override
public String toString() {
return this.name;
}
@Override
public int compareTo(Vertex otherVertex) {
return Double.compare(this.distance, otherVertex.getDistance());
}
}
提前致谢!
解决方案
因为对于 Dijsktra,您搜索最小值(距离),所以保存最小距离的变量设置为 MAXIMUM_VALUE,因为“其他所有值”都小于该值。这保证您将正确设置和比较您的第一个最小距离。
编辑:
但是如果你不把它写成 MAX_VALUE 呢?您还不能比较和设置距离吗?
由于您搜索的是您不知道的距离,因此选择任何其他值作为起始值将为该案例引入错误来源:
starting_value < minimal_distance <= MAXIMUM_VALUE
或者换一种说法:如果你在 [0,∞) 中寻找一个最大值,为什么我们坚持从 开始0
?因为这是正确的方法。
推荐阅读
- java - (问题已解决)(Maven运行配置)在本地tomcat服务器中更改java项目
- css - CSS 不透明度过渡
- dictionary - Tableau Server 中地图的地理图层
- flutter - 如何在颤振(飞镖)中重新加载 CheckboxListTile?
- r - 在 geom_col 躲避位置中未保留的组内排序
- python - 如何从另一个屏幕获取字段值?
- powershell - Powershell + csv:读取第1列,修改内容并将其写在第2列中
- reactjs - 在使用 react-dnd 的 react typescript 中使用 useDrag({}) 方法时出错
- django - Django 将请求传递给 to_representation 方法
- java - 在不计算它们的值的情况下对 String 中提供的大数字列表进行排序