2014-11-29 4 views
1

Я сделал этот кусок кода, который должен попросить пользователя ввести длину первых массивов, которая будет содержать количество чисел, которое он хочет, чем получение каждого числа до тех пор, пока сумма не будет выполнена. после этого ему нужно запросить длину массива цифр и получить цифры. чем, мне нужно проверить, не содержат ли все цифры все цифры, если это правда, напечатайте, если нет, напечатайте false. В этом коде я уже заменяю int [] строковыми массивами, потому что я думаю, что так оно и работает. , когда я пытался создавать массивы Int, только с номерами с одной цифрой, отлично работает. Проблема возникает, когда вы хотите, чтобы номер 22 с 2 цифрами, проверка прерываний и не работающая.Проверка наличия всех цифр в другом массиве

String numInNumbersArray, 
digitInDigitsArray; 
int counterNumbers=0; 
System.out.println("Please enter the length of the numbers array: "); 
int numbersLength=s.nextInt(); 
String[] numbersArray=new String [numbersLength]; 

System.out.printf("Please enter %d numbers: ",numbersLength); 
    for(int i=0;i<numbersArray.length;i++){ 
     numInNumbersArray=s.next(); 
     numbersArray[i]=numInNumbersArray; 
    } 
System.out.println("Please enter the length of the digits array: "); 
int digitsLength=s.nextInt(); 
String[] digitsArray=new String [digitsLength]; 
System.out.printf("Please enter %d digits between 0 - 9 and - if you want: ",digitsLength); 
    for(int i=0;i<digitsArray.length;i++){ 
     digitInDigitsArray=s.next(); 
     digitsArray[i]=digitInDigitsArray; 
     } 
    for(int i=0;i<digitsArray.length;i++){ 
     for(int j=0;j<numbersArray.length;j++){ 
      if(numbersArray[j].equals(digitsArray[i])){ 
       counterNumbers++; 
      } 
     } 
    } 
    if(counterNumbers==numbersArray.length){ 
     System.out.println("true\n"); 
    }else{ 
     System.out.println("false\n"); 
    } 

Так что, очевидно, нужно массив строк, но я понятия не имею, как продолжить здесь, чтобы проверить каждую цифру из числа. (Я не могу использовать передовые методы, только простые проверки). Ваша помощь или настройка были бы замечательными. Благодарю.

EDIT: Это должно быть строка, поскольку она также maight содержать «-» (negetive номера) , чтобы сделать его более clealry понять, я буду добавлять примеры:

digits arrays for example : (1,2,-,3) 
and numbers array : (1,-2,3) 

это должно вернуться верно.

and digits: (1,2,3) 
numbers: (12,-3,123) 

должен возвращать значение false.

+0

'numbersArray [j] == digitsArray [i]' Нет, вы сравниваете строки с == .. Argh! Дополнительные сведения см. В разделе [Как сравнить строки в Java?] (Http://stackoverflow.com/questions/513832/how-do-i-compare-strings-in-java) –

+0

К сожалению. это не мое, но это не изменит мою главную проблему, так как мне нужно переместить все число за каждую цифру и проверить, и это моя основная проблема. – rassko

+0

Ваша проблема не совсем ясна: «Мне нужно проверить, все ли цифры содержат все цифры »- вы должны сказать лучше, или даже привести пример, когда это правда, и когда false. Но в любом случае основой для этого будут деления чисел, которые вы получаете на цифры.Итак, сначала вы сохраняете ввод в массив int [], а затем на каждом int в этом массиве вы делаете что-то вроде этого: do { newArray [index ++] = number% 10; номер/= 10; } while (number> 0) –

ответ

0

Проблема заключается в том, что вы проверяете, равны ли массивы.

Представьте, если numbersArray = {"2", "2"} и digitsArray = {"2", "2"}, как вы заявили выше.

Этот цикл:

for(int i=0;i<digitsArray.length;i++){ 
    for(int j=0;j<numbersArray.length;j++){ 
     if(numbersArray[j].equals(digitsArray[i])){ 
      counterNumbers++; 
     } 
    } 
} 

будет сравнивать первый "2" - numbersArray[0] с digitsArray[0] И digitsArray[1], делая counterNumbers = 2. Затем первый цикл цикла будет обрабатываться до i=1, где он выйдет вторым «2» - numbersArray[1] с digitsArray[0] И digitsArray[1], производя counterNumbers = 4.

Вы видите здесь ошибку?

Вот подсказка, вы должны сравнивать каждый массив «по цифре», а не сравнивать первую цифру в numbersArray со всеми «цифрами» в digitsArray. ПРИМЕЧАНИЕ. Этот совет полезен только в том случае, если у вас есть каждый массив (numbersArray и digitsArray) в том же порядке. Вы должны изучить их сортировку, чтобы убедиться в этом.

Поскольку это кажется домашним заданием, я остановлюсь здесь и позволяю вам исправить это самостоятельно.

+0

спасибо за ваш комментарий, как я писал, я знаю, что нужно было сделать, я просто не знаю, как это сделать, вот что я просил :) намек на то, как начать это делать. – rassko

Смежные вопросы