У меня имеется класс Gene, который трансформирует
математическое выражение вида ( x + 3 )
в ,например, массив array={"+","x","3",null,null,...}
. Логика трансформации stringEquationToArray(String givenString)
в считывании белых знаков.
import java.util.Arrays;
public class Gene {
private String[] gene;
public Gene(String geneString){
gene= stringEquationToArray(geneString);
}
public String[] getGene() {
return gene;
}
public static String[] stringEquationToArray(String givenString) {
int quantityOfWhiteSpaces = getQuantityOfWhitespaces(givenString);
int[] whitespaceDestination = getIndexesOfWhiteSpaces(givenString);
char[] givenCharArray = givenString.toCharArray();
String[] binTree = new String[15];
switch (quantityOfWhiteSpaces){
case 2:
char[] level0 = Arrays.copyOfRange(givenCharArray, 2, givenCharArray.length - 2);
binTree[0] = String.copyValueOf(level0);
break;
case 4:
char[] firstEl = Arrays.copyOfRange(givenCharArray, whitespaceDestination[0], whitespaceDestination[1]);
char[] operand = Arrays.copyOfRange(givenCharArray, whitespaceDestination[1], whitespaceDestination[2]);
char[] secondEl = Arrays.copyOfRange(givenCharArray, whitespaceDestination[2], whitespaceDestination[3]);
binTree[0] = String.copyValueOf(operand);
binTree[1] = String.copyValueOf(firstEl);
binTree[2] = String.copyValueOf(secondEl);
break;
}
return binTree;
}
/**
* returns indexes of whitespaces.
*/
private static int[] getIndexesOfWhiteSpaces(String givenString) {
char[] givenCharArray = givenString.toCharArray();
int[] whiteSpacePlace = new int[46];
int indexOfWhitespaces = 0;
for (int i = 0; i < givenCharArray.length; i++) {
if (Character.isWhitespace(givenCharArray[i]) == true) {
whiteSpacePlace[indexOfWhitespaces] = i;
indexOfWhitespaces++;
}
}
return whiteSpacePlace;
}
/**
* returns quantity of white spaces.
*/
private static int getQuantityOfWhitespaces(String givenString) {
char[] givenCharArray = givenString.toCharArray();
int indexOfWhitespaces = 0;
for (int i = 0; i < givenCharArray.length; i++) {
if (Character.isWhitespace(givenCharArray[i])) {
indexOfWhitespaces++;
}
}
return indexOfWhitespaces;
}
}
Когда я тестирую Gene , я хочу проверить приналежность рандомного елемента массива array
к множеству set
, у меня постоянно выкидывает false
там, где должно быть true
.
import java.util.ArrayList;
public class Test {
public static void main(String[] args) {
ArrayList<String> set = new ArrayList<>();
set.add("x");
set.add("x^2");
String stringArray = "( x - 34 )";
Gene gene = new Gene(stringArray);
gene.getGene();
if(set.contains(gene.getGene()[1])){
System.out.println("YES");
}else{
System.out.println("NO");
}
}
}
Я почти уверен что надо переопределить метод contains
, но никак у меня не выходит.
У вас класс Gene
генерирует строки с пробелом спереди и сравнивает " x"
c "x"
ArrayList<String> set = new ArrayList<>();
set.add("x");
set.add("x^2");
String stringArray = "( x - 34 )";
Gene gene = new Gene(stringArray);
String s = gene.getGene();
if(set.contains(gene.getGene()[1])){
//s[1] = " x"
//set.contains("x") == true
//set.contains(" x") == false.
System.out.println("YES");
}else{
System.out.println("NO");
}
}
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Перевод документов на английский язык: Важность и ключевые аспекты
Какие существуют виды рекламных бордов и как выбрать подходящий?
Добрый день, нужно написать то, что позволит подключиться к https://apihh
Есть массив значений(координат), как передать его в метод paint, чтобы он отрисовывал по этим координатам? Обычной передачей параметров нельзя...
Возможно ли в Android при вводе пользователем некорректно написанного слова получить список всевозможных вариантов правильного написания...