Я работаю над программой, которая поможет мне отсортировать по регионам, которые отвечают требованиям на веб-сайте NationStates. Это мой первый раз, используя любой внешний API или XML. Я столкнулся с проблемой, когда два определенных оператора if в строках 87 (if (tag == "Password") {)
и 91 (} else if (tag == "Minuscule") {)
пропускаются, даже если выполнены условия. Я использую eclipse, и я пропустил код в режиме отладки с точками останова в этих строках. Пожалуйста, помогите мне!Моя программа продолжает пропускать оператор if, хотя условия выполнены.
import java.io.InputStream;
import java.net.URL;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import org.w3c.dom.Document;
import org.w3c.dom.Element;
import org.w3c.dom.Node;
import org.w3c.dom.NodeList;
public class Main {
public static void main(final String argv[]) {
final String[] regionsarray = new String[5000];
int arraylength = 0;
try {
final URL url = new URL("https://www.nationstates.net/cgi-bin/api.cgi?region=the_black_riders&q=embassies");
final InputStream stream = url.openStream();
final DocumentBuilderFactory dbFactory = DocumentBuilderFactory.newInstance();
final DocumentBuilder dBuilder = dbFactory.newDocumentBuilder();
final Document doc = dBuilder.parse(stream);
doc.getDocumentElement().normalize();
final NodeList nList = doc.getElementsByTagName("EMBASSIES");
for (int temp = 0; temp < nList.getLength(); temp++) {
final Node nNode = nList.item(temp);
if (nNode.getNodeType() == Node.ELEMENT_NODE) {
final Element eElement = (Element) nNode;
for (int temp2 = 0; temp2 < 5000; temp2++)
try {
final String region = eElement.getElementsByTagName("EMBASSY").item(temp2).getTextContent();
regionsarray[arraylength] = "";
for (int temp3 = 0; temp3 < region.length(); temp3++)
if (region.charAt(temp3) == ' ')
regionsarray[arraylength] = regionsarray[arraylength] + '_';
else
regionsarray[arraylength] = regionsarray[arraylength] + region.charAt(temp3);
regionsarray[arraylength] = regionsarray[arraylength].toLowerCase();
System.out.println("Found " + regionsarray[arraylength] + ".");
arraylength++;
} catch (final NullPointerException e) {
System.out.println("END OF EMBASSY TESTING");
System.out.println();
temp2 = 5000;
}
}
}
try {
Thread.sleep(600);
} catch (final InterruptedException ex) {
Thread.currentThread().interrupt();
}
for (int temp = 0; temp < arraylength; temp++) {
boolean issuitable = true;
final URL regionurl = new URL("https://www.nationstates.net/cgi-bin/api.cgi?region=" + regionsarray[temp] + "&q=tags");
final InputStream regionstream = regionurl.openStream();
final Document regiondoc = dBuilder.parse(regionstream);
regiondoc.getDocumentElement().normalize();
final NodeList regionnList = regiondoc.getElementsByTagName("TAGS");
for (int temp2 = 0; temp2 < regionnList.getLength(); temp2++) {
final Node regionnNode = regionnList.item(temp2);
if (regionnNode.getNodeType() == Node.ELEMENT_NODE) {
final Element regioneElement = (Element) regionnNode;
for (int temp3 = 0; temp3 < 150; temp3++)
try {
final String tag = regioneElement.getElementsByTagName("TAG").item(temp3).getTextContent();
if (tag == "Password") {
issuitable = false;
System.out.println(regionsarray[temp] + " disqualified because it is password protected.");
temp3 = 150;
} else if (tag == "Minuscule") {
issuitable = false;
System.out.println(regionsarray[temp] + " disqualified because it is too small.");
temp3 = 150;
}
} catch (final NullPointerException e) {
temp3 = 150;
}
}
}
if (issuitable)
System.out.println(regionsarray[temp] + " passed tag testing.");
try {
Thread.sleep(600);
} catch (final InterruptedException ex) {
Thread.currentThread().interrupt();
}
}
System.out.println("END OF TAG TESTING");
System.out.println();
} catch (final Exception e) {
e.printStackTrace();
}
}
}
http://stackoverflow.com/questions/513832/how-do-i-compare -strings-in-java –
Никогда не кодируйте методы так долго! Это против хорошего программирования! И вы можете отлаживать его, поэтому поймите, какая строка является результатом ошибки и свести к минимуму ваш вопрос! –
@AmirPashazadeh Спасибо за _ ** конструктивную ** _ критику ... Также в следующий раз прочитайте, прежде чем давать кому-то язык. Я четко заявил, какие строки вызывают проблему, и что я отлаживал ее. – user2949243