我怎样才能将文件 Reader 输入保存到数组中,然后制作图形 [Java]?(高手问题,自己测试)
How can i save File Reader input in Array and then make a Graphic [Java]?(Question for Pros, test yourself)
我试图从 "input1.txt" 文件中输入一些数字到 Java 中,将它们保存在 3 个数组中并用这些数字为图形创建一个顶点,但它不起作用。它 returns 错误 "Compute launch button tooltip" 。你能帮帮我吗?
class GraphPanel extends JFrame {
private static final long serialVersionUID = 1L;
UGraph x;
Graphic 的构造函数
public GraphPanel(UGraph x) {
setTitle("Graph");
setSize(1500,1500);
setResizable(true);
setVisible(true);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
this.x=x;
}
构建图表
public void paint(Graphics graphic) {
int knots=x.KnotenList.size() , kants=x.KantenList.size();
graphic.setColor(Color.RED);
for(int i=0;i<knots;++i) {//malen der Knoten
graphic.fillOval(x.KnotenList.get(i).x, x.KnotenList.get(i).y, 8, 8);
}
graphic.setColor(Color.BLACK);
int fromID,toID;
GKnote from,to;
for(int i=0;i<kants;++i) {//malen der Kanten
fromID= x.KantenList.get(i).fromID;
toID = x.KantenList.get(i).toID;
from=x.getKnote(fromID);
to=x.getKnote(toID);
graphic.drawLine(from.x+4, from.y+4, to.x+4, to.y+4);
}
}
主要功能
public static void main(String[] args) throws IOException {
FileReader in = null;
//UGraph g=new UGraph();
int [] idlist= new int [100];
int [] xlist= new int [100];
int [] ylist= new int [100];
int insgesamtpunkte=0;
文件输入及出错位置
try {
in = new FileReader("input1.txt");
int tmp=0,satind=1,spaceanzahl=0,gfid=0,gfx=0,gfy=0;
char c;
while ((c = (char) in.read()) != ';') {
if(c>='0' && c<='9') {//constructs a Number
tmp+=c-'0';
tmp*=10;
}
else if(c==' ') {
tmp/=10;
switch(satind++) {
case 1: gfid=tmp;
case 2: gfx=tmp;
case 3: gfy=tmp;
}
tmp=0;
if(++spaceanzahl==3) {
//System.out.println(gfid+"|"+gfx+"|"+gfy);
//Saving Ints in Arrays
idlist[insgesamtpunkte]=gfid;
xlist[insgesamtpunkte]=gfx;
ylist[insgesamtpunkte++]=gfy;
spaceanzahl=0;
satind=1;
tmp=0;
while ((c = (char) in.read()) == ' ') if(c==';') break;
if(c>='0' && c<='9') {//constructs a Number
tmp+=c-'0';
tmp*=10;
}
}
}
}
}
finally {
if (in != null) {
in.close();
}
}
从数组中添加顶点
for(int i=0;i<insgesamtpunkte;++i)
g.addKnote(idlist[i],xlist[i],ylist[i]);
手动添加顶点和边
g.addKnote(32,223,341);
g.addKante(2, 14, 12);
g.addKante(3, 14, 32);
制作图形
new GraphPanel(g);
}
}
文件内容为
14 321 544 12 443 234 ;
您可以使用 java 8+ 很好地读取来自文件的输入,如下所示:
int numbers[] = Files.lines(Paths.get("input1.txt"))
.map(line -> line.split(" "))
.flatMap(Arrays::stream)
.mapToInt(Integer::parseInt)
.toArray();
现在 numbers
数组包含输入文件中的所有整数。你可以用它来创建你需要的3个数组。
我试图从 "input1.txt" 文件中输入一些数字到 Java 中,将它们保存在 3 个数组中并用这些数字为图形创建一个顶点,但它不起作用。它 returns 错误 "Compute launch button tooltip" 。你能帮帮我吗?
class GraphPanel extends JFrame {
private static final long serialVersionUID = 1L;
UGraph x;
Graphic 的构造函数
public GraphPanel(UGraph x) {
setTitle("Graph");
setSize(1500,1500);
setResizable(true);
setVisible(true);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
this.x=x;
}
构建图表
public void paint(Graphics graphic) {
int knots=x.KnotenList.size() , kants=x.KantenList.size();
graphic.setColor(Color.RED);
for(int i=0;i<knots;++i) {//malen der Knoten
graphic.fillOval(x.KnotenList.get(i).x, x.KnotenList.get(i).y, 8, 8);
}
graphic.setColor(Color.BLACK);
int fromID,toID;
GKnote from,to;
for(int i=0;i<kants;++i) {//malen der Kanten
fromID= x.KantenList.get(i).fromID;
toID = x.KantenList.get(i).toID;
from=x.getKnote(fromID);
to=x.getKnote(toID);
graphic.drawLine(from.x+4, from.y+4, to.x+4, to.y+4);
}
}
主要功能
public static void main(String[] args) throws IOException {
FileReader in = null;
//UGraph g=new UGraph();
int [] idlist= new int [100];
int [] xlist= new int [100];
int [] ylist= new int [100];
int insgesamtpunkte=0;
文件输入及出错位置
try {
in = new FileReader("input1.txt");
int tmp=0,satind=1,spaceanzahl=0,gfid=0,gfx=0,gfy=0;
char c;
while ((c = (char) in.read()) != ';') {
if(c>='0' && c<='9') {//constructs a Number
tmp+=c-'0';
tmp*=10;
}
else if(c==' ') {
tmp/=10;
switch(satind++) {
case 1: gfid=tmp;
case 2: gfx=tmp;
case 3: gfy=tmp;
}
tmp=0;
if(++spaceanzahl==3) {
//System.out.println(gfid+"|"+gfx+"|"+gfy);
//Saving Ints in Arrays
idlist[insgesamtpunkte]=gfid;
xlist[insgesamtpunkte]=gfx;
ylist[insgesamtpunkte++]=gfy;
spaceanzahl=0;
satind=1;
tmp=0;
while ((c = (char) in.read()) == ' ') if(c==';') break;
if(c>='0' && c<='9') {//constructs a Number
tmp+=c-'0';
tmp*=10;
}
}
}
}
}
finally {
if (in != null) {
in.close();
}
}
从数组中添加顶点
for(int i=0;i<insgesamtpunkte;++i)
g.addKnote(idlist[i],xlist[i],ylist[i]);
手动添加顶点和边
g.addKnote(32,223,341);
g.addKante(2, 14, 12);
g.addKante(3, 14, 32);
制作图形
new GraphPanel(g);
}
}
文件内容为
14 321 544 12 443 234 ;
您可以使用 java 8+ 很好地读取来自文件的输入,如下所示:
int numbers[] = Files.lines(Paths.get("input1.txt"))
.map(line -> line.split(" "))
.flatMap(Arrays::stream)
.mapToInt(Integer::parseInt)
.toArray();
现在 numbers
数组包含输入文件中的所有整数。你可以用它来创建你需要的3个数组。