gpt4 book ai didi

java - 对数组进行排序并将更改链接到另一个相同大小的数组

转载 作者:行者123 更新时间:2023-11-29 03:01:09 24 4
gpt4 key购买 nike

我正在尝试对作为多项式项的字符串数组进行排序。每个位置都是作为字符串的多项式的 1 项,并适本地签名,但是我想按幂对它们进行排序。

例如

+3x^5
+5
-8x
-4x^2

我是如何解决这个问题的,方法是创建第二个只存储功率的数组,我想根据这个数组对它们进行排序。即

for (int i=0; i<sortArray.length; i++) {
if (sortArray[i].indexOf("^")!= -1)
sortArrayDegree[i] = Integer.parseInt((sortArray[i].
substring(sortArray[i].indexOf("^") + 1, sortArray[i].length())));
else if (sortArray[i].indexOf("x")!= -1)
sortArrayDegree[i]=1;
else
sortArrayDegree[i]=0;
}

但是我不确定如何将两者联系起来,所以对第二个的任何更改都会发生在第一个

目前这意味着第二个数组看起来像这样
5
0
1
2
我想我可以创建一个新数组并将其存储为第二列(数据类型冲突),但这仍然存在排序问题

最佳答案

我不确定您想要实现此目标的方式是否是最明智的方式,但这是您可以做到的方式:创建包含多项式成员的 powernumber 的类。使该类成为Comparable,然后将其放入一个数组中,sort 方法将使用您从Comparable 接口(interface)覆盖的可比方法。

public class PolynomialMember implements Comparable<PolynomialMember> {

public int power; // public for brevity, but should be private with getters and setters
public String number; // public for brevity, but should be private with getters and setters

public PolynomialMember(String number, int power) {
this.number = number;
this.power = power;
}

@Override
public int compareTo(PolynomialMember o) {
return Integer.compare(this.power, o.power);
}

// optional: override for pretty printing
@Override
public String toString() {
if(!number.equals("0")) {
if(number.charAt(0) == '-') {
return number + "x^" + power;
} else {
return "+" + number + "x^" + power;
}
} else {
return "";
}
}
}

这样你就不需要两个数组,你当然不应该“链接”两个数组。

你可以像这样使用这个类:

public static void main(String[] args) {

List<PolynomialMember> polynom = new ArrayList<PolynomialMember>();
polynom.add(new PolynomialMember("-5", 3));
polynom.add(new PolynomialMember("7", 1));
polynom.add(new PolynomialMember("4", 0));
polynom.add(new PolynomialMember("8", 2));

for(PolynomialMember pm : polynom) {
System.out.print(pm + " ");
// prints: -5x^3 +7x^1 +4x^0 +8x^2
}
System.out.println();
Collections.sort(polynom); //this is where the magic happens.
for(PolynomialMember pm : polynom) {
System.out.print(pm + " ");
// prints: +4x^0 +7x^1 +8x^2 -5x^3
}
}

关于java - 对数组进行排序并将更改链接到另一个相同大小的数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34850966/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com