我想修改以下代码以从文本文件中读取节点(相对于硬编码值)
此外,以以下格式从文本文件中读取数据:
P1 = 3 5 1 -1 0 8
P2 = 5 6 2 -1 1 7 0 -4
等等…
命名值P(x)并输入剩余数据。有什么建议吗?
import java.io.DataInputStream;
import java.util.LinkedList;
import java.util.ListIterator;
// A term contains the coefficient and the exponent of x.
class Term {
public Term(int c, int d) {
coeff = c;
degree = d;
}
public Term multiply(Term other) {
return new Term(coeff * other.coeff, degree + other.degree);
}
public void add(int c) {
coeff += c;
}
public void sub(int c) {
coeff -= c;
}
public int getCoeff() {
return coeff;
}
public int getDegree() {
return degree;
}
private int coeff;
private int degree;
}
// A polynomial made up of terms.
class Polynomial {
// Construct a Polynomial object.
public Polynomial() {
terms = new LinkedList();
}
public Polynomial add(Polynomial p) {
Polynomial r = new Polynomial();
ListIterator iterator = terms.listIterator();
while (iterator.hasNext()) {
r.add((Term) iterator.next());
}
ListIterator pIterator = p.terms.listIterator();
while (pIterator.hasNext()) {
r.add((Term) pIterator.next());
}
return r;
}
public Polynomial sub(Polynomial p) {
Polynomial r = new Polynomial();
ListIterator iterator = terms.listIterator();
while (iterator.hasNext()) {
r.sub((Term) iterator.next());
}
ListIterator pIterator = p.terms.listIterator();
while (pIterator.hasNext()) {
r.sub((Term) pIterator.next());
}
return r;
}
public Polynomial multiply(Polynomial p) {
Polynomial r = new Polynomial();
ListIterator iterator = terms.listIterator();
while (iterator.hasNext()) {
ListIterator pIterator = p.terms.listIterator();
Term t1 = (Term) iterator.next();
while (pIterator.hasNext()) {
Term t2 = (Term) pIterator.next();
r.add(t1.multiply(t2));
}
}
return r;
}
// Adds a coefficient and degree as a new Term.
public void addTerm(int c, int d) {
add(new Term(c, d));
}
// Adds a term
public void add(Term t) {
int c = t.getCoeff();
int d = t.getDegree();
ListIterator iterator = terms.listIterator();
while (iterator.hasNext()) {
Term current = (Term) iterator.next();
if (d == current.getDegree()) {
if (c == -current.getCoeff())
iterator.remove();
else
current.add(c);
return;
} else if (d < current.getDegree()) {
iterator.previous();
iterator.add(t);
return;
}
}
iterator.add(t);
}
public void sub(Term t) {
int c = t.getCoeff();
int d = t.getDegree();
ListIterator iterator = terms.listIterator();
while (iterator.hasNext()) {
Term current = (Term) iterator.next();
if (d == current.getDegree()) {
if (c == current.getCoeff())
iterator.remove();
else
current.add(-c);
return;
} else if (d < current.getDegree()) {
iterator.previous();
iterator.add(t);
current.add(-c);
return;
}
}
iterator.add(t);
}
// Prints the polynomial.
public void print() {
ListIterator iterator = terms.listIterator();
while (iterator.hasNext()) {
Term current = (Term) iterator.next();
if (current.getCoeff() != 0) {
if ((current.getCoeff() < 0) || (!(current.getDegree() != 0))) {
System.out.print(" ");
}
else {
System.out.print(" + ");
}
System.out.print(current.getCoeff());
if (current.getDegree() > 0) {
System.out.print("x");
if (current.getDegree() > 1)
System.out.print("^" + current.getDegree());
}
}
}
System.out.println();
}
@SuppressWarnings("deprecation")
public char getChar() {
char val = ' ';
String buffer = "";
DataInputStream ds = new DataInputStream(System.in);
try {
buffer = ds.readLine();
val = buffer.charAt(0);
} catch (Exception e) {
}
return (val);
}
public char enterNext() {
System.out.println("Enter next Polynomial? ");
char ans = this.getChar();
switch (ans) {
case 'n':
case 'N':
System.out.println("All Done.");
System.exit(0);
break;
case 'y':
case 'Y':
System.out.println("Enter next one, please!");
}
return ans;
}
private LinkedList terms;
}
// A test program for Polynomial and Term classes.
public class RPC {
private static char ans = 'y';
public static void main(String[] args) {
Polynomial p = new Polynomial();
do
{
p.addTerm(10, 0);
p.addTerm(-1, 1);
p.addTerm(9, 7);
p.addTerm(5, 10);
System.out.print("f(x) = ");
p.print();
System.out.println();
Polynomial q = new Polynomial();
do
{
q.addTerm(1, 0);
q.addTerm(-11, 1);
q.addTerm(19, 7);
q.addTerm(15, 10);
System.out.print("q(x) = ");
q.print();
p.enterNext();
}
while (!(ans != 'y') | !(ans != 'Y'));
System.out.println();
Polynomial a = p.add(q);
System.out.print("f(x) + q(x) = ");
a.print();
Polynomial s = p.sub(p);
s.print();
Polynomial m = p.multiply(q);
System.out.print("f(x) * q(x) = ");
m.print();
System.exit(0);
} while (ans != 1000);
}
}
除非您的数据已经是二进制格式,否则我不会使用DataInputStream
。以下示例BufferedReader
用于撰写org.jscience.mathematics.function.Polynomial
。
请注意,为方便应用 Horner方案
,最高阶系数是第一个,如本示例所示。
1 2 3 4
4 3 2 1
系数:1 2 3 4
多项式:[1]x³+ [2]x²+ [3] x + [4]
系数:4 3 2 1
多项式:[4]x³+ [3]x²+ [2] x + [1]
码:
import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;
import org.jscience.mathematics.function.Polynomial;
import org.jscience.mathematics.function.Term;
import org.jscience.mathematics.function.Variable;
import org.jscience.mathematics.number.Integer64;
/** @see http://stackoverflow.com/questions/8276150 */
public class ReadPoly {
public static void main(String[] args) throws IOException {
BufferedReader r = new BufferedReader(new FileReader("test.txt"));
String s;
while ((s = r.readLine()) != null) {
System.out.println("Coefficient: " + s);
Polynomial<Integer64> p = create(s.split(" "));
System.out.println("Polynomial: " + p);
}
}
public static Polynomial<Integer64> create(String... a) {
Variable<Integer64> x = new Variable.Local<Integer64>("x");
Polynomial<Integer64> px = Polynomial.valueOf(Integer64.ZERO, x);
for (int i = 0, e = a.length - 1; i < a.length; i++, e--) {
px = px.plus(Polynomial.valueOf(
Integer64.valueOf(a[i]), Term.valueOf(x, e)));
}
return px;
}
}
我想从1中得到一个变量。将js文件复制到另一个。js文件。现在我有主要的问题。js 我有平衡感。js 我得到了错误 常量余额=需要(“./余额”); ReferenceError:未定义require 我通过windows PowerShell运行此代码,节点版本为:v14。10.1
问题内容: 因此,我有两个不同的文件,如下所示: file1.py file2.py 但是我似乎无法让file2识别来自file1的变量,即使它已经导入到file1中也是如此。如果可以某种方式实现,那将非常有帮助。 问题答案: 导入在使得全球(即,模块级)的约束名字提供给下面的代码-唯一的此类名称是。它并 没有 做反向:在定义的名称并不提供给代码的时候进口。即使您以正确的方式(如@nate正确建议
问题内容: 我想知道如何将PHP变量保存到txt文件,然后再次检索它们。 例: 有一个输入框,提交后,在输入框中写入的内容将保存到文本文件中。稍后,需要将结果作为变量返回。因此,可以说变量是$ text,我需要将其保存到文本文件中并能够再次取回它。 问题答案: 这应该可以执行您想要的操作,但是如果没有更多上下文,我无法确定。 将$ text写入文件: 再次检索它:
问题内容: 我怎样才能做到这一点? 它将替换为文本。但是我想用变量的内容替换它。 我尝试过 它也不起作用。 问题答案: 您需要使用双引号: 您的单引号可防止将shell变量替换为其内容。
我在fxml文件中有一个JavaFX GUI,定义了它的控制器类。我在该GUI中有两个我想要的文本项,一个与一个变量绑定,其值在用户重新加载屏幕之前不会更改,另一个我认为需要是StringProperty,因为它显示了我的TableView中一列的运行总数。由于它们是什么,我正在尝试使用Label而不是TextField作为它们的显示控件。 我喜欢塞巴斯蒂安对这个问题的回答: 在JavaFx标签中
我希望第一列是arraylist的名称(e1,或e2,或e3),我希望第二列有它的值(一个int),在第n个索引中。 我该怎么做呢? 你想进一步澄清我的意思,请不要害怕离开一个下午。 所以我设法使程序几乎正常工作--我不能使用ArrayLists的原始结构,因为所有变量都必须在编译期间声明--之后不能声明。我决定使用一个hashmap,键具有第一个值,第二个值的arraylist位于第N个位置: