Set indent to tabs and applied format to project
This commit is contained in:
parent
782a4361c2
commit
0e5667582b
21 changed files with 586 additions and 634 deletions
14
.idea/codeStyles/Project.xml
Normal file
14
.idea/codeStyles/Project.xml
Normal file
|
@ -0,0 +1,14 @@
|
|||
<component name="ProjectCodeStyleConfiguration">
|
||||
<code_scheme name="Project" version="173">
|
||||
<codeStyleSettings language="JAVA">
|
||||
<indentOptions>
|
||||
<option name="USE_TAB_CHARACTER" value="true" />
|
||||
</indentOptions>
|
||||
</codeStyleSettings>
|
||||
<codeStyleSettings language="XML">
|
||||
<indentOptions>
|
||||
<option name="USE_TAB_CHARACTER" value="true" />
|
||||
</indentOptions>
|
||||
</codeStyleSettings>
|
||||
</code_scheme>
|
||||
</component>
|
5
.idea/codeStyles/codeStyleConfig.xml
Normal file
5
.idea/codeStyles/codeStyleConfig.xml
Normal file
|
@ -0,0 +1,5 @@
|
|||
<component name="ProjectCodeStyleConfiguration">
|
||||
<state>
|
||||
<option name="USE_PER_PROJECT_SETTINGS" value="true" />
|
||||
</state>
|
||||
</component>
|
76
pom.xml
76
pom.xml
|
@ -1,44 +1,44 @@
|
|||
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
|
||||
<modelVersion>4.0.0</modelVersion>
|
||||
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
|
||||
<modelVersion>4.0.0</modelVersion>
|
||||
|
||||
<groupId>com.upv.ltd.graphs</groupId>
|
||||
<artifactId>graphs</artifactId>
|
||||
<version>0.0.1-SNAPSHOT</version>
|
||||
<packaging>jar</packaging>
|
||||
<groupId>com.upv.ltd.graphs</groupId>
|
||||
<artifactId>graphs</artifactId>
|
||||
<version>0.0.1-SNAPSHOT</version>
|
||||
<packaging>jar</packaging>
|
||||
|
||||
<name>graphs</name>
|
||||
<url>http://maven.apache.org</url>
|
||||
<name>graphs</name>
|
||||
<url>http://maven.apache.org</url>
|
||||
|
||||
<properties>
|
||||
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
|
||||
</properties>
|
||||
<properties>
|
||||
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
|
||||
</properties>
|
||||
|
||||
<dependencies>
|
||||
<dependency>
|
||||
<groupId>junit</groupId>
|
||||
<artifactId>junit</artifactId>
|
||||
<version>3.8.1</version>
|
||||
<scope>test</scope>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>com.google.code.gson</groupId>
|
||||
<artifactId>gson</artifactId>
|
||||
<version>2.3.1</version>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>com.github.javaparser</groupId>
|
||||
<artifactId>javaparser-symbol-solver-core</artifactId>
|
||||
<version>3.5.17</version>
|
||||
</dependency>
|
||||
</dependencies>
|
||||
|
||||
<developers>
|
||||
<developer>
|
||||
<name>Josep Silva</name>
|
||||
<email>jsilva@dsic.upv.es</email>
|
||||
<url>http://www.dsic.upv.es/~jsilva</url>
|
||||
<id>jsilva</id>
|
||||
</developer>
|
||||
</developers>
|
||||
<dependencies>
|
||||
<dependency>
|
||||
<groupId>junit</groupId>
|
||||
<artifactId>junit</artifactId>
|
||||
<version>3.8.1</version>
|
||||
<scope>test</scope>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>com.google.code.gson</groupId>
|
||||
<artifactId>gson</artifactId>
|
||||
<version>2.3.1</version>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>com.github.javaparser</groupId>
|
||||
<artifactId>javaparser-symbol-solver-core</artifactId>
|
||||
<version>3.5.17</version>
|
||||
</dependency>
|
||||
</dependencies>
|
||||
|
||||
<developers>
|
||||
<developer>
|
||||
<name>Josep Silva</name>
|
||||
<email>jsilva@dsic.upv.es</email>
|
||||
<url>http://www.dsic.upv.es/~jsilva</url>
|
||||
<id>jsilva</id>
|
||||
</developer>
|
||||
</developers>
|
||||
</project>
|
||||
|
|
|
@ -4,363 +4,353 @@ package grafos;
|
|||
|
||||
/*$Id$*/
|
||||
/*
|
||||
******************************************************************************
|
||||
* *
|
||||
* (c) Copyright Laszlo Szathmary *
|
||||
* *
|
||||
* This program is free software; you can redistribute it and/or modify it *
|
||||
* under the terms of the GNU Lesser General Public License as published by *
|
||||
* the Free Software Foundation; either version 2.1 of the License, or *
|
||||
* (at your option) any later version. *
|
||||
* *
|
||||
* This program is distributed in the hope that it will be useful, but *
|
||||
* WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY *
|
||||
* or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public *
|
||||
* License for more details. *
|
||||
* *
|
||||
* You should have received a copy of the GNU Lesser General Public License *
|
||||
* along with this program; if not, write to the Free Software Foundation, *
|
||||
* Inc., 675 Mass Ave, Cambridge, MA 02139, USA. *
|
||||
* *
|
||||
******************************************************************************
|
||||
*/
|
||||
******************************************************************************
|
||||
* *
|
||||
* (c) Copyright Laszlo Szathmary *
|
||||
* *
|
||||
* This program is free software; you can redistribute it and/or modify it *
|
||||
* under the terms of the GNU Lesser General Public License as published by *
|
||||
* the Free Software Foundation; either version 2.1 of the License, or *
|
||||
* (at your option) any later version. *
|
||||
* *
|
||||
* This program is distributed in the hope that it will be useful, but *
|
||||
* WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY *
|
||||
* or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public *
|
||||
* License for more details. *
|
||||
* *
|
||||
* You should have received a copy of the GNU Lesser General Public License *
|
||||
* along with this program; if not, write to the Free Software Foundation, *
|
||||
* Inc., 675 Mass Ave, Cambridge, MA 02139, USA. *
|
||||
* *
|
||||
******************************************************************************
|
||||
*/
|
||||
|
||||
import java.io.BufferedReader;
|
||||
import java.io.BufferedWriter;
|
||||
import java.io.DataInputStream;
|
||||
import java.io.File;
|
||||
import java.io.FileInputStream;
|
||||
import java.io.FileOutputStream;
|
||||
import java.io.FileWriter;
|
||||
import java.io.InputStreamReader;
|
||||
import java.io.*;
|
||||
import java.util.Properties;
|
||||
|
||||
/**
|
||||
* <dl>
|
||||
* <dt>Purpose: GraphViz Java API
|
||||
* <dd>
|
||||
*
|
||||
* <dt>Description:
|
||||
* <dd> With this Java class you can simply call dot
|
||||
* from your Java programs.
|
||||
* <dt>Example usage:
|
||||
* <dd>
|
||||
* <pre>
|
||||
* GraphViz gv = new GraphViz();
|
||||
* gv.addln(gv.start_graph());
|
||||
* gv.addln("A -> B;");
|
||||
* gv.addln("A -> C;");
|
||||
* gv.addln(gv.end_graph());
|
||||
* System.out.println(gv.getDotSource());
|
||||
*
|
||||
* String type = "gif";
|
||||
* File out = new File("out." + type); // out.gif in this example
|
||||
* gv.writeGraphToFile( gv.getGraph( gv.getDotSource(), type ), out );
|
||||
* </pre>
|
||||
* </dd>
|
||||
*
|
||||
* </dl>
|
||||
*
|
||||
* @version v0.5.1, 2013/03/18 (March) -- Patch of Juan Hoyos (Mac support)
|
||||
* @version v0.5, 2012/04/24 (April) -- Patch of Abdur Rahman (OS detection + start subgraph +
|
||||
* read config file)
|
||||
* @version v0.4, 2011/02/05 (February) -- Patch of Keheliya Gallaba is added. Now you
|
||||
* can specify the type of the output file: gif, dot, fig, pdf, ps, svg, png, etc.
|
||||
* @version v0.3, 2010/11/29 (November) -- Windows support + ability to read the graph from a text file
|
||||
* @version v0.2, 2010/07/22 (July) -- bug fix
|
||||
* @version v0.1, 2003/12/04 (December) -- first release
|
||||
* @author Laszlo Szathmary (<a href="jabba.laci@gmail.com">jabba.laci@gmail.com</a>)
|
||||
*/
|
||||
public class GraphViz
|
||||
{
|
||||
/**
|
||||
* Detects the client's operating system.
|
||||
*/
|
||||
private final static String osName = System.getProperty("os.name").replaceAll("\\s","");
|
||||
* <dl>
|
||||
* <dt>Purpose: GraphViz Java API
|
||||
* <dd>
|
||||
*
|
||||
* <dt>Description:
|
||||
* <dd> With this Java class you can simply call dot
|
||||
* from your Java programs.
|
||||
* <dt>Example usage:
|
||||
* <dd>
|
||||
* <pre>
|
||||
* GraphViz gv = new GraphViz();
|
||||
* gv.addln(gv.start_graph());
|
||||
* gv.addln("A -> B;");
|
||||
* gv.addln("A -> C;");
|
||||
* gv.addln(gv.end_graph());
|
||||
* System.out.println(gv.getDotSource());
|
||||
*
|
||||
* String type = "gif";
|
||||
* File out = new File("out." + type); // out.gif in this example
|
||||
* gv.writeGraphToFile( gv.getGraph( gv.getDotSource(), type ), out );
|
||||
* </pre>
|
||||
* </dd>
|
||||
*
|
||||
* </dl>
|
||||
*
|
||||
* @author Laszlo Szathmary (<a href="jabba.laci@gmail.com">jabba.laci@gmail.com</a>)
|
||||
* @version v0.1, 2003/12/04 (December) -- first release
|
||||
*/
|
||||
public class GraphViz {
|
||||
/**
|
||||
* Detects the client's operating system.
|
||||
*/
|
||||
private final static String osName = System.getProperty("os.name").replaceAll("\\s", "");
|
||||
|
||||
/**
|
||||
* Load the config.properties file.
|
||||
*/
|
||||
private final static String cfgProp = "./src/main/res/config.properties";
|
||||
private final static Properties configFile = new Properties() {
|
||||
private final static long serialVersionUID = 1L; {
|
||||
try {
|
||||
load(new FileInputStream(cfgProp));
|
||||
} catch (Exception ignored) {}
|
||||
}
|
||||
};
|
||||
/**
|
||||
* Load the config.properties file.
|
||||
*/
|
||||
private final static String cfgProp = "./src/main/res/config.properties";
|
||||
private final static Properties configFile = new Properties() {
|
||||
private final static long serialVersionUID = 1L;
|
||||
|
||||
/**
|
||||
* The dir. where temporary files will be created.
|
||||
*/
|
||||
private static String TEMP_DIR = "/tmp/";
|
||||
{
|
||||
try {
|
||||
load(new FileInputStream(cfgProp));
|
||||
} catch (Exception ignored) {
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
/**
|
||||
* Where is your dot program located? It will be called externally.
|
||||
*/
|
||||
private static String DOT = configFile.getProperty("dotFor" + osName);
|
||||
/**
|
||||
* The dir. where temporary files will be created.
|
||||
*/
|
||||
private static String TEMP_DIR = "/tmp/";
|
||||
|
||||
/**
|
||||
* The image size in dpi. 96 dpi is normal size. Higher values are 10% higher each.
|
||||
* Lower values 10% lower each.
|
||||
*
|
||||
* dpi patch by Peter Mueller
|
||||
*/
|
||||
private int[] dpiSizes = {46, 51, 57, 63, 70, 78, 86, 96, 106, 116, 128, 141, 155, 170, 187, 206, 226, 249};
|
||||
/**
|
||||
* Where is your dot program located? It will be called externally.
|
||||
*/
|
||||
private static String DOT = configFile.getProperty("dotFor" + osName);
|
||||
|
||||
/**
|
||||
* Define the index in the image size array.
|
||||
*/
|
||||
private int currentDpiPos = 7;
|
||||
/**
|
||||
* The image size in dpi. 96 dpi is normal size. Higher values are 10% higher each.
|
||||
* Lower values 10% lower each.
|
||||
* <p>
|
||||
* dpi patch by Peter Mueller
|
||||
*/
|
||||
private int[] dpiSizes = {46, 51, 57, 63, 70, 78, 86, 96, 106, 116, 128, 141, 155, 170, 187, 206, 226, 249};
|
||||
|
||||
/**
|
||||
* Increase the image size (dpi).
|
||||
*/
|
||||
public void increaseDpi() {
|
||||
if ( this.currentDpiPos < (this.dpiSizes.length - 1) ) {
|
||||
++this.currentDpiPos;
|
||||
}
|
||||
}
|
||||
/**
|
||||
* Define the index in the image size array.
|
||||
*/
|
||||
private int currentDpiPos = 7;
|
||||
|
||||
/**
|
||||
* Decrease the image size (dpi).
|
||||
*/
|
||||
public void decreaseDpi() {
|
||||
if (this.currentDpiPos > 0) {
|
||||
--this.currentDpiPos;
|
||||
}
|
||||
}
|
||||
/**
|
||||
* Increase the image size (dpi).
|
||||
*/
|
||||
public void increaseDpi() {
|
||||
if (this.currentDpiPos < (this.dpiSizes.length - 1)) {
|
||||
++this.currentDpiPos;
|
||||
}
|
||||
}
|
||||
|
||||
public int getImageDpi() {
|
||||
return this.dpiSizes[this.currentDpiPos];
|
||||
}
|
||||
/**
|
||||
* Decrease the image size (dpi).
|
||||
*/
|
||||
public void decreaseDpi() {
|
||||
if (this.currentDpiPos > 0) {
|
||||
--this.currentDpiPos;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* The source of the graph written in dot language.
|
||||
*/
|
||||
private StringBuilder graph = new StringBuilder();
|
||||
public int getImageDpi() {
|
||||
return this.dpiSizes[this.currentDpiPos];
|
||||
}
|
||||
|
||||
/**
|
||||
* Constructor: creates a new GraphViz object that will contain
|
||||
* a graph.
|
||||
*/
|
||||
public GraphViz() {
|
||||
}
|
||||
/**
|
||||
* The source of the graph written in dot language.
|
||||
*/
|
||||
private StringBuilder graph = new StringBuilder();
|
||||
|
||||
/**
|
||||
* Returns the graph's source description in dot language.
|
||||
* @return Source of the graph in dot language.
|
||||
*/
|
||||
public String getDotSource() {
|
||||
return this.graph.toString();
|
||||
}
|
||||
/**
|
||||
* Constructor: creates a new GraphViz object that will contain
|
||||
* a graph.
|
||||
*/
|
||||
public GraphViz() {
|
||||
}
|
||||
|
||||
/**
|
||||
* Adds a string to the graph's source (without newline).
|
||||
*/
|
||||
public void add(String line) {
|
||||
this.graph.append(line);
|
||||
}
|
||||
/**
|
||||
* Returns the graph's source description in dot language.
|
||||
*
|
||||
* @return Source of the graph in dot language.
|
||||
*/
|
||||
public String getDotSource() {
|
||||
return this.graph.toString();
|
||||
}
|
||||
|
||||
/**
|
||||
* Adds a string to the graph's source (with newline).
|
||||
*/
|
||||
public void addln(String line) {
|
||||
this.graph.append(line).append("\n");
|
||||
}
|
||||
/**
|
||||
* Adds a string to the graph's source (without newline).
|
||||
*/
|
||||
public void add(String line) {
|
||||
this.graph.append(line);
|
||||
}
|
||||
|
||||
/**
|
||||
* Adds a newline to the graph's source.
|
||||
*/
|
||||
public void addln() {
|
||||
this.graph.append('\n');
|
||||
}
|
||||
/**
|
||||
* Adds a string to the graph's source (with newline).
|
||||
*/
|
||||
public void addln(String line) {
|
||||
this.graph.append(line).append("\n");
|
||||
}
|
||||
|
||||
public void clearGraph(){
|
||||
this.graph = new StringBuilder();
|
||||
}
|
||||
/**
|
||||
* Adds a newline to the graph's source.
|
||||
*/
|
||||
public void addln() {
|
||||
this.graph.append('\n');
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the graph as an image in binary format.
|
||||
* @param dot_source Source of the graph to be drawn.
|
||||
* @param type Type of the output image to be produced, e.g.: gif, dot, fig, pdf, ps, svg, png.
|
||||
* @return A byte array containing the image of the graph.
|
||||
*/
|
||||
public byte[] getGraph(String dot_source, String type)
|
||||
{
|
||||
File dot;
|
||||
byte[] img_stream;
|
||||
public void clearGraph() {
|
||||
this.graph = new StringBuilder();
|
||||
}
|
||||
|
||||
try {
|
||||
dot = writeDotSourceToFile(dot_source);
|
||||
if (dot != null)
|
||||
{
|
||||
img_stream = get_img_stream(dot, type);
|
||||
if (!dot.delete())
|
||||
System.err.println("Warning: " + dot.getAbsolutePath() + " could not be deleted!");
|
||||
return img_stream;
|
||||
}
|
||||
return null;
|
||||
} catch (java.io.IOException ioe) { return null; }
|
||||
}
|
||||
/**
|
||||
* Returns the graph as an image in binary format.
|
||||
*
|
||||
* @param dot_source Source of the graph to be drawn.
|
||||
* @param type Type of the output image to be produced, e.g.: gif, dot, fig, pdf, ps, svg, png.
|
||||
* @return A byte array containing the image of the graph.
|
||||
*/
|
||||
public byte[] getGraph(String dot_source, String type) {
|
||||
File dot;
|
||||
byte[] img_stream;
|
||||
|
||||
/**
|
||||
* Writes the graph's image in a file.
|
||||
* @param img A byte array containing the image of the graph.
|
||||
* @param file Name of the file to where we want to write.
|
||||
* @return Success: 1, Failure: -1
|
||||
*/
|
||||
public int writeGraphToFile(byte[] img, String file)
|
||||
{
|
||||
File to = new File(file);
|
||||
return writeGraphToFile(img, to);
|
||||
}
|
||||
try {
|
||||
dot = writeDotSourceToFile(dot_source);
|
||||
if (dot != null) {
|
||||
img_stream = get_img_stream(dot, type);
|
||||
if (!dot.delete())
|
||||
System.err.println("Warning: " + dot.getAbsolutePath() + " could not be deleted!");
|
||||
return img_stream;
|
||||
}
|
||||
return null;
|
||||
} catch (java.io.IOException ioe) {
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Writes the graph's image in a file.
|
||||
* @param img A byte array containing the image of the graph.
|
||||
* @param to A File object to where we want to write.
|
||||
* @return Success: 1, Failure: -1
|
||||
*/
|
||||
public int writeGraphToFile(byte[] img, File to)
|
||||
{
|
||||
try {
|
||||
FileOutputStream fos = new FileOutputStream(to);
|
||||
fos.write(img);
|
||||
fos.close();
|
||||
} catch (java.io.IOException ioe) { return -1; }
|
||||
return 1;
|
||||
}
|
||||
/**
|
||||
* Writes the graph's image in a file.
|
||||
*
|
||||
* @param img A byte array containing the image of the graph.
|
||||
* @param file Name of the file to where we want to write.
|
||||
* @return Success: 1, Failure: -1
|
||||
*/
|
||||
public int writeGraphToFile(byte[] img, String file) {
|
||||
File to = new File(file);
|
||||
return writeGraphToFile(img, to);
|
||||
}
|
||||
|
||||
/**
|
||||
* It will call the external dot program, and return the image in
|
||||
* binary format.
|
||||
* @param dot Source of the graph (in dot language).
|
||||
* @param type Type of the output image to be produced, e.g.: gif, dot, fig, pdf, ps, svg, png.
|
||||
* @return The image of the graph in .gif format.
|
||||
*/
|
||||
private byte[] get_img_stream(File dot, String type)
|
||||
{
|
||||
File img;
|
||||
byte[] img_stream = null;
|
||||
/**
|
||||
* Writes the graph's image in a file.
|
||||
*
|
||||
* @param img A byte array containing the image of the graph.
|
||||
* @param to A File object to where we want to write.
|
||||
* @return Success: 1, Failure: -1
|
||||
*/
|
||||
public int writeGraphToFile(byte[] img, File to) {
|
||||
try {
|
||||
FileOutputStream fos = new FileOutputStream(to);
|
||||
fos.write(img);
|
||||
fos.close();
|
||||
} catch (java.io.IOException ioe) {
|
||||
return -1;
|
||||
}
|
||||
return 1;
|
||||
}
|
||||
|
||||
try {
|
||||
img = File.createTempFile("graph_", "."+type, new File(GraphViz.TEMP_DIR));
|
||||
Runtime rt = Runtime.getRuntime();
|
||||
/**
|
||||
* It will call the external dot program, and return the image in
|
||||
* binary format.
|
||||
*
|
||||
* @param dot Source of the graph (in dot language).
|
||||
* @param type Type of the output image to be produced, e.g.: gif, dot, fig, pdf, ps, svg, png.
|
||||
* @return The image of the graph in .gif format.
|
||||
*/
|
||||
private byte[] get_img_stream(File dot, String type) {
|
||||
File img;
|
||||
byte[] img_stream = null;
|
||||
|
||||
// patch by Mike Chenault
|
||||
String[] args = {DOT, "-T"+type, "-Gdpi="+dpiSizes[this.currentDpiPos], dot.getAbsolutePath(), "-o", img.getAbsolutePath()};
|
||||
Process p = rt.exec(args);
|
||||
try {
|
||||
img = File.createTempFile("graph_", "." + type, new File(GraphViz.TEMP_DIR));
|
||||
Runtime rt = Runtime.getRuntime();
|
||||
|
||||
p.waitFor();
|
||||
// patch by Mike Chenault
|
||||
String[] args = {DOT, "-T" + type, "-Gdpi=" + dpiSizes[this.currentDpiPos], dot.getAbsolutePath(), "-o", img.getAbsolutePath()};
|
||||
Process p = rt.exec(args);
|
||||
|
||||
FileInputStream in = new FileInputStream(img.getAbsolutePath());
|
||||
img_stream = new byte[in.available()];
|
||||
in.read(img_stream);
|
||||
// Close it if we need to
|
||||
in.close();
|
||||
p.waitFor();
|
||||
|
||||
if (!img.delete())
|
||||
System.err.println("Warning: " + img.getAbsolutePath() + " could not be deleted!");
|
||||
}
|
||||
catch (java.io.IOException ioe) {
|
||||
System.err.println("Error: in I/O processing of tempfile in dir " + GraphViz.TEMP_DIR+"\n");
|
||||
System.err.println(" or in calling external command");
|
||||
ioe.printStackTrace();
|
||||
}
|
||||
catch (java.lang.InterruptedException ie) {
|
||||
System.err.println("Error: the execution of the external program was interrupted");
|
||||
ie.printStackTrace();
|
||||
}
|
||||
FileInputStream in = new FileInputStream(img.getAbsolutePath());
|
||||
img_stream = new byte[in.available()];
|
||||
in.read(img_stream);
|
||||
// Close it if we need to
|
||||
in.close();
|
||||
|
||||
return img_stream;
|
||||
}
|
||||
if (!img.delete())
|
||||
System.err.println("Warning: " + img.getAbsolutePath() + " could not be deleted!");
|
||||
} catch (java.io.IOException ioe) {
|
||||
System.err.println("Error: in I/O processing of tempfile in dir " + GraphViz.TEMP_DIR + "\n");
|
||||
System.err.println(" or in calling external command");
|
||||
ioe.printStackTrace();
|
||||
} catch (java.lang.InterruptedException ie) {
|
||||
System.err.println("Error: the execution of the external program was interrupted");
|
||||
ie.printStackTrace();
|
||||
}
|
||||
|
||||
/**
|
||||
* Writes the source of the graph in a file, and returns the written file
|
||||
* as a File object.
|
||||
* @param str Source of the graph (in dot language).
|
||||
* @return The file (as a File object) that contains the source of the graph.
|
||||
*/
|
||||
private File writeDotSourceToFile(String str) throws java.io.IOException
|
||||
{
|
||||
File temp;
|
||||
try {
|
||||
temp = File.createTempFile("dorrr",".dot", new File(GraphViz.TEMP_DIR));
|
||||
FileWriter fout = new FileWriter(temp);
|
||||
fout.write(str);
|
||||
BufferedWriter br=new BufferedWriter(new FileWriter("/tmp/dotsource.dot"));
|
||||
br.write(str);
|
||||
br.flush();
|
||||
br.close();
|
||||
fout.close();
|
||||
}
|
||||
catch (Exception e) {
|
||||
System.err.println("Error: I/O error while writing the dot source to temp file!");
|
||||
return null;
|
||||
}
|
||||
return temp;
|
||||
}
|
||||
return img_stream;
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns a string that is used to start a graph.
|
||||
* @return A string to open a graph.
|
||||
*/
|
||||
public String start_graph() {
|
||||
return "digraph G {";
|
||||
}
|
||||
/**
|
||||
* Writes the source of the graph in a file, and returns the written file
|
||||
* as a File object.
|
||||
*
|
||||
* @param str Source of the graph (in dot language).
|
||||
* @return The file (as a File object) that contains the source of the graph.
|
||||
*/
|
||||
private File writeDotSourceToFile(String str) throws java.io.IOException {
|
||||
File temp;
|
||||
try {
|
||||
temp = File.createTempFile("dorrr", ".dot", new File(GraphViz.TEMP_DIR));
|
||||
FileWriter fout = new FileWriter(temp);
|
||||
fout.write(str);
|
||||
BufferedWriter br = new BufferedWriter(new FileWriter("/tmp/dotsource.dot"));
|
||||
br.write(str);
|
||||
br.flush();
|
||||
br.close();
|
||||
fout.close();
|
||||
} catch (Exception e) {
|
||||
System.err.println("Error: I/O error while writing the dot source to temp file!");
|
||||
return null;
|
||||
}
|
||||
return temp;
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns a string that is used to end a graph.
|
||||
* @return A string to close a graph.
|
||||
*/
|
||||
public String end_graph() {
|
||||
return "}";
|
||||
}
|
||||
/**
|
||||
* Returns a string that is used to start a graph.
|
||||
*
|
||||
* @return A string to open a graph.
|
||||
*/
|
||||
public String start_graph() {
|
||||
return "digraph G {";
|
||||
}
|
||||
|
||||
/**
|
||||
* Takes the cluster or subgraph id as input parameter and returns a string
|
||||
* that is used to start a subgraph.
|
||||
* @return A string to open a subgraph.
|
||||
*/
|
||||
public String start_subgraph(int clusterid) {
|
||||
return "subgraph cluster_" + clusterid + " {";
|
||||
}
|
||||
/**
|
||||
* Returns a string that is used to end a graph.
|
||||
*
|
||||
* @return A string to close a graph.
|
||||
*/
|
||||
public String end_graph() {
|
||||
return "}";
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns a string that is used to end a graph.
|
||||
* @return A string to close a graph.
|
||||
*/
|
||||
public String end_subgraph() {
|
||||
return "}";
|
||||
}
|
||||
/**
|
||||
* Takes the cluster or subgraph id as input parameter and returns a string
|
||||
* that is used to start a subgraph.
|
||||
*
|
||||
* @return A string to open a subgraph.
|
||||
*/
|
||||
public String start_subgraph(int clusterid) {
|
||||
return "subgraph cluster_" + clusterid + " {";
|
||||
}
|
||||
|
||||
/**
|
||||
* Read a DOT graph from a text file.
|
||||
*
|
||||
* @param input Input text file containing the DOT graph
|
||||
* source.
|
||||
*/
|
||||
public void readSource(String input)
|
||||
{
|
||||
StringBuilder sb = new StringBuilder();
|
||||
/**
|
||||
* Returns a string that is used to end a graph.
|
||||
*
|
||||
* @return A string to close a graph.
|
||||
*/
|
||||
public String end_subgraph() {
|
||||
return "}";
|
||||
}
|
||||
|
||||
try
|
||||
{
|
||||
FileInputStream fis = new FileInputStream(input);
|
||||
DataInputStream dis = new DataInputStream(fis);
|
||||
BufferedReader br = new BufferedReader(new InputStreamReader(dis));
|
||||
String line;
|
||||
while ((line = br.readLine()) != null) {
|
||||
sb.append(line);
|
||||
}
|
||||
dis.close();
|
||||
}
|
||||
catch (Exception e) {
|
||||
System.err.println("Error: " + e.getMessage());
|
||||
}
|
||||
/**
|
||||
* Read a DOT graph from a text file.
|
||||
*
|
||||
* @param input Input text file containing the DOT graph
|
||||
* source.
|
||||
*/
|
||||
public void readSource(String input) {
|
||||
StringBuilder sb = new StringBuilder();
|
||||
|
||||
this.graph = sb;
|
||||
}
|
||||
try {
|
||||
FileInputStream fis = new FileInputStream(input);
|
||||
DataInputStream dis = new DataInputStream(fis);
|
||||
BufferedReader br = new BufferedReader(new InputStreamReader(dis));
|
||||
String line;
|
||||
while ((line = br.readLine()) != null) {
|
||||
sb.append(line);
|
||||
}
|
||||
dis.close();
|
||||
} catch (Exception e) {
|
||||
System.err.println("Error: " + e.getMessage());
|
||||
}
|
||||
|
||||
this.graph = sb;
|
||||
}
|
||||
|
||||
} // end of class GraphViz
|
||||
|
|
|
@ -1,79 +1,77 @@
|
|||
package grafos;
|
||||
|
||||
import java.io.File;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
import com.github.javaparser.JavaParser;
|
||||
import com.github.javaparser.ast.CompilationUnit;
|
||||
import com.github.javaparser.ast.Node;
|
||||
import com.github.javaparser.ast.comments.Comment;
|
||||
import com.github.javaparser.ast.visitor.VoidVisitor;
|
||||
|
||||
import java.io.File;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
public class Transformador {
|
||||
|
||||
public static void main(String[] args) throws Exception {
|
||||
// Ruta del fichero con el programa que vamos a transformar
|
||||
String ruta = "./src/test/res/ejemplos/Test_1";
|
||||
|
||||
|
||||
// Abrimos el fichero original (un ".java")
|
||||
File original = new File(ruta + ".java");
|
||||
|
||||
|
||||
// Parseamos el fichero original. Se crea una unidad de compilación (un AST).
|
||||
CompilationUnit cu = JavaParser.parse(original);
|
||||
|
||||
|
||||
quitarComentarios(cu);
|
||||
|
||||
|
||||
// Recorremos el AST
|
||||
List<String> arcos = new ArrayList<String>();
|
||||
VoidVisitor<List<String>> visitador = new Visitador();
|
||||
visitador.visit(cu,arcos);
|
||||
|
||||
visitador.visit(cu, arcos);
|
||||
|
||||
// Imprimimos el CFG del programa
|
||||
String dotInfo = imprimirGrafo(arcos);
|
||||
|
||||
|
||||
// Generamos un PDF con el CFG del programa
|
||||
System.out.print("\nGenerando PDF...");
|
||||
GraphViz gv=new GraphViz();
|
||||
gv.addln(gv.start_graph());
|
||||
gv.add(dotInfo);
|
||||
gv.addln(gv.end_graph());
|
||||
String type = "pdf"; // String type = "gif";
|
||||
// gv.increaseDpi();
|
||||
gv.decreaseDpi();
|
||||
gv.decreaseDpi();
|
||||
gv.decreaseDpi();
|
||||
gv.decreaseDpi();
|
||||
File destino_CFG = new File(ruta + "_CFG."+ type);
|
||||
gv.writeGraphToFile( gv.getGraph( gv.getDotSource(), type ), destino_CFG);
|
||||
System.out.println(" PDF generado!");
|
||||
GraphViz gv = new GraphViz();
|
||||
gv.addln(gv.start_graph());
|
||||
gv.add(dotInfo);
|
||||
gv.addln(gv.end_graph());
|
||||
String type = "pdf"; // String type = "gif";
|
||||
// gv.increaseDpi();
|
||||
gv.decreaseDpi();
|
||||
gv.decreaseDpi();
|
||||
gv.decreaseDpi();
|
||||
gv.decreaseDpi();
|
||||
File destino_CFG = new File(ruta + "_CFG." + type);
|
||||
gv.writeGraphToFile(gv.getGraph(gv.getDotSource(), type), destino_CFG);
|
||||
System.out.println(" PDF generado!");
|
||||
}
|
||||
|
||||
// Imprime el grafo en la pantalla
|
||||
private static String imprimirGrafo(List<String> arcos)
|
||||
{
|
||||
StringBuilder dotInfo= new StringBuilder();
|
||||
for(String arco:arcos) {
|
||||
private static String imprimirGrafo(List<String> arcos) {
|
||||
StringBuilder dotInfo = new StringBuilder();
|
||||
for (String arco : arcos) {
|
||||
dotInfo.append(arco);
|
||||
System.out.println("ARCO: "+arco);
|
||||
System.out.println("ARCO: " + arco);
|
||||
}
|
||||
System.out.println("\nCFG:");
|
||||
System.out.println(dotInfo);
|
||||
|
||||
return dotInfo.toString();
|
||||
}
|
||||
|
||||
|
||||
// Elimina todos los comentarios de un nodo y sus hijos
|
||||
private static void quitarComentarios(Node node){
|
||||
private static void quitarComentarios(Node node) {
|
||||
node.removeComment();
|
||||
for (Comment comment : node.getOrphanComments())
|
||||
{
|
||||
for (Comment comment : node.getOrphanComments()) {
|
||||
node.removeOrphanComment(comment);
|
||||
}
|
||||
// Do something with the node
|
||||
for (Node child : node.getChildNodes()){
|
||||
quitarComentarios(child);
|
||||
}
|
||||
// Do something with the node
|
||||
for (Node child : node.getChildNodes()) {
|
||||
quitarComentarios(child);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
|
|
@ -1,6 +1,4 @@
|
|||
package grafos;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
import com.github.javaparser.ast.NodeList;
|
||||
import com.github.javaparser.ast.body.MethodDeclaration;
|
||||
|
@ -9,83 +7,77 @@ import com.github.javaparser.ast.stmt.ExpressionStmt;
|
|||
import com.github.javaparser.ast.stmt.Statement;
|
||||
import com.github.javaparser.ast.visitor.VoidVisitorAdapter;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
public class Visitador extends VoidVisitorAdapter<List<String>>
|
||||
{
|
||||
|
||||
public class Visitador extends VoidVisitorAdapter<List<String>> {
|
||||
//********************************************************/
|
||||
//********************** Atributos ***********************/
|
||||
//********************************************************/
|
||||
|
||||
|
||||
// Usamos un contador para numerar las instrucciones
|
||||
private int contador=1;
|
||||
private int contador = 1;
|
||||
private String nodoAnterior = "Start";
|
||||
private String nodoActual = "";
|
||||
|
||||
|
||||
//********************************************************/
|
||||
//*********************** Metodos ************************/
|
||||
//********************************************************/
|
||||
|
||||
// Visitador de métodos
|
||||
// Visitador de métodos
|
||||
// Este visitador añade el nodo final al CFG
|
||||
@Override
|
||||
public void visit(MethodDeclaration methodDeclaration, List<String>collector)
|
||||
{
|
||||
// Visitamos el método
|
||||
@Override
|
||||
public void visit(MethodDeclaration methodDeclaration, List<String> collector) {
|
||||
// Visitamos el método
|
||||
super.visit(methodDeclaration, collector);
|
||||
|
||||
|
||||
// Añadimos el nodo final al CFG
|
||||
collector.add(nodoAnterior+"-> Stop;");
|
||||
collector.add(nodoAnterior + "-> Stop;");
|
||||
}
|
||||
|
||||
|
||||
// Visitador de expresiones
|
||||
// Cada expresión encontrada genera un nodo en el CFG
|
||||
@Override
|
||||
public void visit(ExpressionStmt es, List<String>collector)
|
||||
{
|
||||
public void visit(ExpressionStmt es, List<String> collector) {
|
||||
// Creamos el nodo actual
|
||||
nodoActual = crearNodo(es);
|
||||
|
||||
nodoActual = crearNodo(es);
|
||||
|
||||
crearArcos(collector);
|
||||
|
||||
|
||||
nodoAnterior = nodoActual;
|
||||
|
||||
|
||||
// Seguimos visitando...
|
||||
super.visit(es, collector);
|
||||
}
|
||||
|
||||
|
||||
// Añade un arco desde el último nodo hasta el nodo actual (se le pasa como parametro)
|
||||
private void añadirArcoSecuencialCFG(List<String>collector)
|
||||
{
|
||||
private void añadirArcoSecuencialCFG(List<String> collector) {
|
||||
System.out.println("NODO: " + nodoActual);
|
||||
|
||||
|
||||
String arco = nodoAnterior + "->" + nodoActual + ";";
|
||||
collector.add(arco);
|
||||
}
|
||||
|
||||
|
||||
// Crear arcos
|
||||
private void crearArcos(List<String>collector)
|
||||
{
|
||||
añadirArcoSecuencialCFG(collector);
|
||||
private void crearArcos(List<String> collector) {
|
||||
añadirArcoSecuencialCFG(collector);
|
||||
}
|
||||
|
||||
// Crear nodo
|
||||
// Añade un arco desde el nodo actual hasta el último control
|
||||
private String crearNodo(Object objeto)
|
||||
{
|
||||
return "\"("+ contador++ +") "+quitarComillas(objeto.toString())+"\"";
|
||||
private String crearNodo(Object objeto) {
|
||||
return "\"(" + contador++ + ") " + quitarComillas(objeto.toString()) + "\"";
|
||||
}
|
||||
|
||||
|
||||
// Sustituye " por \" en un string: Sirve para eliminar comillas.
|
||||
private static String quitarComillas(String texto)
|
||||
{
|
||||
return texto.replace("\"", "\\\"");
|
||||
private static String quitarComillas(String texto) {
|
||||
return texto.replace("\"", "\\\"");
|
||||
}
|
||||
|
||||
|
||||
// Dada una sentencia,
|
||||
// Si es una <EFBFBD>nica instrucci<EFBFBD>n, devuelve un bloque equivalente
|
||||
// Si es un bloque, lo devuelve
|
||||
private BlockStmt convertirEnBloque(Statement statement)
|
||||
{
|
||||
private BlockStmt convertirEnBloque(Statement statement) {
|
||||
if (statement instanceof BlockStmt)
|
||||
return (BlockStmt) statement;
|
||||
|
||||
|
@ -97,5 +89,5 @@ public class Visitador extends VoidVisitorAdapter<List<String>>
|
|||
|
||||
return block;
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
|
|
@ -2,15 +2,13 @@ package ejemplos;
|
|||
|
||||
public class Bucles_1 {
|
||||
|
||||
public static void main(String[] args)
|
||||
{
|
||||
public static void main(String[] args) {
|
||||
// BUCLE WHILE (sin anidamiento)
|
||||
int x=1;
|
||||
while (x<=10)
|
||||
{
|
||||
int x = 1;
|
||||
while (x <= 10) {
|
||||
System.out.print(x);
|
||||
x++;
|
||||
}
|
||||
System.out.println();
|
||||
System.out.println();
|
||||
}
|
||||
}
|
||||
|
|
|
@ -2,19 +2,16 @@ package ejemplos;
|
|||
|
||||
public class Bucles_2 {
|
||||
|
||||
public static void main(String[] args)
|
||||
{
|
||||
public static void main(String[] args) {
|
||||
// BUCLE WHILE anidado a otro WHILE
|
||||
System.out.println("Empieza bucle WHILE anidado a otro WHILE:");
|
||||
int x=1;
|
||||
char y='a';
|
||||
while (x<=10)
|
||||
{
|
||||
System.out.print(" "+x);
|
||||
y='a';
|
||||
while (y<='c')
|
||||
{
|
||||
System.out.print(" "+y);
|
||||
System.out.println("Empieza bucle WHILE anidado a otro WHILE:");
|
||||
int x = 1;
|
||||
char y = 'a';
|
||||
while (x <= 10) {
|
||||
System.out.print(" " + x);
|
||||
y = 'a';
|
||||
while (y <= 'c') {
|
||||
System.out.print(" " + y);
|
||||
y++;
|
||||
}
|
||||
x++;
|
||||
|
|
|
@ -4,34 +4,32 @@ public class Bucles_3 {
|
|||
|
||||
public static void main(String[] args) {
|
||||
int x;
|
||||
|
||||
|
||||
// BUCLE FOR (sin anidamiento)
|
||||
System.out.println("Empieza bucle FOR:");
|
||||
for (x=1;x<=10;x++)
|
||||
{
|
||||
System.out.print(" "+x);
|
||||
System.out.println("Empieza bucle FOR:");
|
||||
for (x = 1; x <= 10; x++) {
|
||||
System.out.print(" " + x);
|
||||
}
|
||||
System.out.println();
|
||||
|
||||
// BUCLE WHILE (sin anidamiento)
|
||||
System.out.println("Empieza bucle WHILE:");
|
||||
x=1;
|
||||
while (x<=10)
|
||||
{
|
||||
System.out.print(" "+x);
|
||||
System.out.println("Empieza bucle WHILE:");
|
||||
x = 1;
|
||||
while (x <= 10) {
|
||||
System.out.print(" " + x);
|
||||
x++;
|
||||
}
|
||||
System.out.println();
|
||||
|
||||
// BUCLE DO WHILE (sin anidamiento)
|
||||
System.out.println("Empieza bucle DO WHILE:");
|
||||
x=1;
|
||||
do{
|
||||
System.out.print(" "+x);
|
||||
System.out.println("Empieza bucle DO WHILE:");
|
||||
x = 1;
|
||||
do {
|
||||
System.out.print(" " + x);
|
||||
x++;
|
||||
}
|
||||
while (x<=10);
|
||||
while (x <= 10);
|
||||
System.out.println();
|
||||
|
||||
|
||||
}
|
||||
}
|
||||
|
|
|
@ -2,22 +2,19 @@ package ejemplos;
|
|||
|
||||
public class Bucles_4 {
|
||||
|
||||
public static void main(String[] args)
|
||||
{
|
||||
int x=1;
|
||||
|
||||
public static void main(String[] args) {
|
||||
int x = 1;
|
||||
|
||||
//Bucle 1: Contador
|
||||
while (x<10)
|
||||
{
|
||||
while (x < 10) {
|
||||
System.out.println(x);
|
||||
x++;
|
||||
}
|
||||
|
||||
//Bucle 2: Sumatorio
|
||||
int suma=0;
|
||||
int y=1;
|
||||
while (y<10)
|
||||
{
|
||||
int suma = 0;
|
||||
int y = 1;
|
||||
while (y < 10) {
|
||||
suma += y;
|
||||
y++;
|
||||
}
|
||||
|
@ -27,8 +24,7 @@ public class Bucles_4 {
|
|||
int sumatorio = 0;
|
||||
int min = 10;
|
||||
int max = 100;
|
||||
for (int num = min; num <= max; num++)
|
||||
{
|
||||
for (int num = min; num <= max; num++) {
|
||||
sumatorio += num;
|
||||
}
|
||||
System.out.println(sumatorio);
|
||||
|
|
|
@ -5,29 +5,25 @@ public class Bucles_5 {
|
|||
public static void main(String[] args) {
|
||||
int x = 0;
|
||||
char y = '0';
|
||||
|
||||
|
||||
// BUCLE FOR anidado a otro FOR
|
||||
System.out.println("Empieza bucle FOR anidado a otro FOR:");
|
||||
for (x=1;x<=10;x++)
|
||||
{
|
||||
System.out.print(" "+x);
|
||||
for (y='a';y<='c';y++)
|
||||
{
|
||||
System.out.print(" "+y);
|
||||
System.out.println("Empieza bucle FOR anidado a otro FOR:");
|
||||
for (x = 1; x <= 10; x++) {
|
||||
System.out.print(" " + x);
|
||||
for (y = 'a'; y <= 'c'; y++) {
|
||||
System.out.print(" " + y);
|
||||
}
|
||||
}
|
||||
System.out.println();
|
||||
|
||||
// BUCLE WHILE anidado a otro WHILE
|
||||
System.out.println("Empieza bucle WHILE anidado a otro WHILE:");
|
||||
x=1;
|
||||
while (x<=10)
|
||||
{
|
||||
System.out.print(" "+x);
|
||||
y='a';
|
||||
while (y<='c')
|
||||
{
|
||||
System.out.print(" "+y);
|
||||
System.out.println("Empieza bucle WHILE anidado a otro WHILE:");
|
||||
x = 1;
|
||||
while (x <= 10) {
|
||||
System.out.print(" " + x);
|
||||
y = 'a';
|
||||
while (y <= 'c') {
|
||||
System.out.print(" " + y);
|
||||
y++;
|
||||
}
|
||||
x++;
|
||||
|
@ -35,18 +31,17 @@ public class Bucles_5 {
|
|||
System.out.println();
|
||||
|
||||
// BUCLE FOR anidado a bucle DO WHILE
|
||||
System.out.println("Empieza bucle FOR anidado a bucle DO WHILE:");
|
||||
x=1;
|
||||
do{
|
||||
System.out.print(" "+x);
|
||||
for (y='a';y<='c';y++)
|
||||
{
|
||||
System.out.print(" "+y);
|
||||
System.out.println("Empieza bucle FOR anidado a bucle DO WHILE:");
|
||||
x = 1;
|
||||
do {
|
||||
System.out.print(" " + x);
|
||||
for (y = 'a'; y <= 'c'; y++) {
|
||||
System.out.print(" " + y);
|
||||
}
|
||||
x++;
|
||||
}
|
||||
while (x<=10);
|
||||
while (x <= 10);
|
||||
System.out.println();
|
||||
|
||||
|
||||
}
|
||||
}
|
||||
|
|
|
@ -2,26 +2,22 @@ package ejemplos;
|
|||
|
||||
public class Bucles_6 {
|
||||
|
||||
public static void main(String[] args)
|
||||
{
|
||||
public static void main(String[] args) {
|
||||
// BUCLE WHILE (sin anidamiento)
|
||||
System.out.println("Empieza bucle WHILE:");
|
||||
int x=1;
|
||||
while (x<=10)
|
||||
{
|
||||
System.out.print(" "+x);
|
||||
System.out.println("Empieza bucle WHILE:");
|
||||
int x = 1;
|
||||
while (x <= 10) {
|
||||
System.out.print(" " + x);
|
||||
x++;
|
||||
while (x<=10)
|
||||
{
|
||||
System.out.print(" "+x);
|
||||
while (x <= 10) {
|
||||
System.out.print(" " + x);
|
||||
x++;
|
||||
}
|
||||
}
|
||||
while (x<=10)
|
||||
{
|
||||
System.out.print(" "+x);
|
||||
while (x <= 10) {
|
||||
System.out.print(" " + x);
|
||||
x++;
|
||||
}
|
||||
System.out.println();
|
||||
System.out.println();
|
||||
}
|
||||
}
|
||||
|
|
|
@ -2,12 +2,11 @@ package ejemplos;
|
|||
|
||||
public class Test_1 {
|
||||
|
||||
public static void main(String[] args)
|
||||
{
|
||||
public static void main(String[] args) {
|
||||
System.out.println("HOLA mundo");
|
||||
int x=1;
|
||||
x=2;
|
||||
x=3;
|
||||
x=4;
|
||||
int x = 1;
|
||||
x = 2;
|
||||
x = 3;
|
||||
x = 4;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -2,13 +2,12 @@ package ejemplos;
|
|||
|
||||
public class Test_2 {
|
||||
|
||||
public static void main(String[] args)
|
||||
{
|
||||
int x=1;
|
||||
public static void main(String[] args) {
|
||||
int x = 1;
|
||||
x++;
|
||||
++x;
|
||||
int y=0;
|
||||
x=x+y;
|
||||
int y = 0;
|
||||
x = x + y;
|
||||
System.out.println(x);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -2,13 +2,12 @@ package ejemplos;
|
|||
|
||||
public class Test_3 {
|
||||
|
||||
public static void main(String[] args)
|
||||
{
|
||||
int x=1;
|
||||
|
||||
if (x==1)
|
||||
x=2;
|
||||
x=3;
|
||||
x=4;
|
||||
public static void main(String[] args) {
|
||||
int x = 1;
|
||||
|
||||
if (x == 1)
|
||||
x = 2;
|
||||
x = 3;
|
||||
x = 4;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -2,20 +2,17 @@ package ejemplos;
|
|||
|
||||
public class Test_4 {
|
||||
|
||||
public static void main(String[] args)
|
||||
{
|
||||
int x=1;
|
||||
|
||||
if (x==1)
|
||||
{
|
||||
x=2;
|
||||
if (x>=1)
|
||||
{
|
||||
x=3;
|
||||
x=4;
|
||||
public static void main(String[] args) {
|
||||
int x = 1;
|
||||
|
||||
if (x == 1) {
|
||||
x = 2;
|
||||
if (x >= 1) {
|
||||
x = 3;
|
||||
x = 4;
|
||||
}
|
||||
}
|
||||
x=5;
|
||||
x=6;
|
||||
x = 5;
|
||||
x = 6;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -2,21 +2,18 @@ package ejemplos;
|
|||
|
||||
public class Test_5 {
|
||||
|
||||
public static void main(String[] args)
|
||||
{
|
||||
int x=1;
|
||||
|
||||
if (x==1)
|
||||
{
|
||||
x=2;
|
||||
if (x>=1)
|
||||
{
|
||||
x=3;
|
||||
x=4;
|
||||
public static void main(String[] args) {
|
||||
int x = 1;
|
||||
|
||||
if (x == 1) {
|
||||
x = 2;
|
||||
if (x >= 1) {
|
||||
x = 3;
|
||||
x = 4;
|
||||
}
|
||||
x=5;
|
||||
x = 5;
|
||||
}
|
||||
x=6;
|
||||
x=7;
|
||||
x = 6;
|
||||
x = 7;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -2,20 +2,16 @@ package ejemplos;
|
|||
|
||||
public class Test_6 {
|
||||
|
||||
public static void main(String[] args)
|
||||
{
|
||||
int x=1;
|
||||
|
||||
if (x==1)
|
||||
{
|
||||
x=2;
|
||||
x=3;
|
||||
public static void main(String[] args) {
|
||||
int x = 1;
|
||||
|
||||
if (x == 1) {
|
||||
x = 2;
|
||||
x = 3;
|
||||
} else {
|
||||
x = 4;
|
||||
x = 5;
|
||||
}
|
||||
else
|
||||
{
|
||||
x=4;
|
||||
x=5;
|
||||
}
|
||||
x=6;
|
||||
x = 6;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -3,21 +3,16 @@ package ejemplos;
|
|||
|
||||
public class Test_7 {
|
||||
|
||||
public static void main(String[] args)
|
||||
{
|
||||
int x=1;
|
||||
|
||||
if (x==1)
|
||||
{
|
||||
x=2;
|
||||
}
|
||||
else x=3;
|
||||
x=4;
|
||||
if (x==2)
|
||||
{
|
||||
x=5;
|
||||
}
|
||||
else if (x==3) x=6;
|
||||
x=7;
|
||||
public static void main(String[] args) {
|
||||
int x = 1;
|
||||
|
||||
if (x == 1) {
|
||||
x = 2;
|
||||
} else x = 3;
|
||||
x = 4;
|
||||
if (x == 2) {
|
||||
x = 5;
|
||||
} else if (x == 3) x = 6;
|
||||
x = 7;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -2,21 +2,18 @@ package ejemplos;
|
|||
|
||||
public class Test_8 {
|
||||
|
||||
public static void main(String[] args)
|
||||
{
|
||||
int x=1;
|
||||
|
||||
if (x==1)
|
||||
{
|
||||
x=2;
|
||||
public static void main(String[] args) {
|
||||
int x = 1;
|
||||
|
||||
if (x == 1) {
|
||||
x = 2;
|
||||
}
|
||||
x=5;
|
||||
x=6;
|
||||
if (x==2)
|
||||
{
|
||||
x=7;
|
||||
x = 5;
|
||||
x = 6;
|
||||
if (x == 2) {
|
||||
x = 7;
|
||||
}
|
||||
if (x==3) x=8;
|
||||
x=9;
|
||||
if (x == 3) x = 8;
|
||||
x = 9;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -2,29 +2,23 @@ package ejemplos;
|
|||
|
||||
public class Test_9 {
|
||||
|
||||
|
||||
public static void main(String[] args)
|
||||
{
|
||||
|
||||
public static void main(String[] args) {
|
||||
// ANIDAMIENTO de IF y WHILE
|
||||
|
||||
// ANIDAMIENTO de IF y WHILE 2
|
||||
|
||||
int x=0;
|
||||
if (x>1)
|
||||
{
|
||||
x=1;
|
||||
while (x>2)
|
||||
{
|
||||
x=2;
|
||||
while (x>3)
|
||||
{
|
||||
x=3;
|
||||
if (x>4)
|
||||
{
|
||||
x=4;
|
||||
if (x>5)
|
||||
{
|
||||
x=5;
|
||||
|
||||
int x = 0;
|
||||
if (x > 1) {
|
||||
x = 1;
|
||||
while (x > 2) {
|
||||
x = 2;
|
||||
while (x > 3) {
|
||||
x = 3;
|
||||
if (x > 4) {
|
||||
x = 4;
|
||||
if (x > 5) {
|
||||
x = 5;
|
||||
}
|
||||
x--;
|
||||
}
|
||||
|
@ -34,8 +28,8 @@ public class Test_9 {
|
|||
}
|
||||
x--;
|
||||
}
|
||||
|
||||
|
||||
x--;
|
||||
|
||||
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue