2016-10-16 2 views
3

прямо сейчас У меня есть ArrayList of Strings. Массив заполняется данными, которые пользователь вводит в консоль. Я пытаюсь удалить первый элемент массива, а затем использовать остальную часть ввода. По остальной части ввода я подразумеваю вход без первого элемента. Я пытаюсь сделать это, используя nameofarray.remove(0);, но это, похоже, не работает. Любая помощь по удалению первого элемента массива, а затем получение остальной части массива оценена, спасибо!Удаление первого элемента из массива

import java.util.ArrayList; 
import java.util.Scanner; 

class Driver { 

    public static void main(String[] args) { 
     Scanner k = new Scanner(System.in); 
     String userInput; 
     char msb; 
     int convertedBinary; 
     String removedMSB; 
     ArrayList<String> binaryInput = new ArrayList<String>(); 
     System.out.println("Press 1 to use the Binary Converter: Press 2 to use the Decimal Converter:"); 
     int userChoice = k.nextInt(); 

     if (userChoice == 1) { 
      System.out.println("Welcome to the Binary Converter!"); 
      System.out.println("Please enter a 10 bit binary number"); 
      // Adding the input to the ArrayList 
      userInput = k.next(); 
      msb = userInput.charAt(0); 
      binaryInput.add(userInput); 

      if (msb == '0') { 
       convertedBinary = Integer.parseInt(userInput, 2); 
       System.out.println("Your number in decimal is " + convertedBinary); 
      } else if (msb == '1') { 
       // Attempting to remove first element from ArrayList 
       binaryInput.remove(0); 
      convertedBinary = Integer.parseInt(userInput, 2); 
      System.out.println("Your number in decimal is " +  convertedBinary); 
      } 
     } 
    } 
} 
+0

К 'Попытка удалить первый элемент из ArrayList', вы пытаетесь сказать, что вы хотите удалить первый символ из пользовательский ввод? то есть, если вводится «1000», вы хотите удалить «1». – DhiwaTdG

+0

Исправить. Поэтому, если пользователь ввел 101010, единственное, что я хочу удалить, это «1», и после его удаления он будет читать «01010» – JavaGuy1

+0

. Проверьте мой ответ и сообщите мне, разрешает ли он вашу проблему. – DhiwaTdG

ответ

1
binaryInput.add(userInput); 

BinaryInput является ArrayList строк. Вы добавляете строку userInput в binaryInput, поэтому теперь binaryInput [0] является строкой userInput.

binaryInput.remove(0); 

Эта строка удалит первый элемент binaryInput- which userInput. Я предполагаю, что вы хотите удалить первый символ userInput, а не всю строку, как вы сейчас делаете в своем коде.

Я предложил бы делать что-то вроде этого, вместо:

public static void main(String[] args) { 
    Scanner k = new Scanner(System.in); 
    String userInput; 
    char msb; 
    int convertedBinary; 
    String removedMSB; 
    ArrayList<String> binaryInput = new ArrayList<String>(); 
    System.out.println("Press 1 to use the Binary Converter: Press 2 to use the Decimal Converter:"); 
    int userChoice = k.nextInt(); 

    if (userChoice == 1) { 
     System.out.println("Welcome to the Binary Converter!"); 
     System.out.println("Please enter a 10 bit binary number"); 
     // Adding the input to the ArrayList 
     userInput = k.next(); 
     String withoutFirstChar = userInput .substring(1); 
     msb = userInput.charAt(0); 

     if (msb == '0') { 
      convertedBinary = Integer.parseInt(userInput, 2); 
      System.out.println("Your number in decimal is " + convertedBinary); 
     } else if (msb == '1') { 
      convertedBinary = Integer.parseInt(withoutFirstChar , 2); 
      System.out.println("Your number in decimal is " +  convertedBinary); 
     } 
    } 
} 

}

+1

Спасибо! Хороший вызов с помощью 'substring'.Я полностью забыл об этом методе. Прошло некоторое время с тех пор, как я сделал java. Все еще возвращайтесь к качелям! Спасибо^_ ^ – JavaGuy1

0

Что вы подразумеваете под "не работает"? Это порождает ошибку? Использование .remove(0) должно работать, я просто сделал небольшой тест, и он удалил первый элемент, как ожидалось. Выход из приведенного ниже кода: [b, c].

ArrayList<String> list = new ArrayList<String>(); 
list.add("a"); 
list.add("b"); 
list.add("c"); 
list.remove(0); 
System.out.println(list); 
+0

Только что отредактировал мой код. При выполнении преобразования код должен удалить первый элемент, а если вы ввели «1000», он выдает 8 (преобразование в двоичный). Но у меня был 'binaryInput.remove (0);', который должен удалить первый элемент, изменяющий массив на «000», который должен быть равен 0 – JavaGuy1

0

Эта строка в вашем блоке еще

convertedBinary = Integer.parseInt(userInput, 2); 

должно быть что-то вроде

convertedBinary = Integer.parseInt(binaryInputJoined, 2); 

Где вам нужно будет присоединиться к ценности у вас есть в списке binaryInput.

Похоже, что вы либо удаляли неправильный список, либо конвертировали неправильный список. В качестве альтернативы вы можете избежать списков и использовать подстроку.

+0

Я пробовал :(. Это не сработает, потому что 'parseInt' принимает строку Возможно, для 'binaryInput.toString();'? – JavaGuy1

+0

Вы можете объединить значения, которые у вас есть внутри binaryInput, чтобы создать новую строку. – simonv

1

Ваша цель очень проста, и в этом случае вам не нужно использовать ArrayList.

Когда msb == '1', удалите первый символ, а затем выполните преобразование. Вот и все. :-)

import java.util.Scanner; 

class Driver { 

    public static void main(String[] args) { 
     Scanner k = new Scanner(System.in); 
     String userInput; 
     char msb; 
     int convertedBinary = 0; 

     System.out.println("Press 1 to use the Binary Converter: Press 2 to use the Decimal Converter:"); 
     int userChoice = k.nextInt(); 

     if (userChoice == 1) { 
      System.out.println("Welcome to the Binary Converter!"); 
      System.out.println("Please enter a 10 bit binary number"); 
      userInput = k.next(); 
      msb = userInput.charAt(0); 

      if (msb == '0') { 
       convertedBinary = Integer.parseInt(userInput, 2); 
      } else if (msb == '1') { 
       convertedBinary = Integer.parseInt(userInput.substring(1), 2); 
      } 
      System.out.println("Your number in decimal is " + convertedBinary); 
     } 
    } 
} 
Смежные вопросы