2014-09-26 4 views
0

Вот что у меня есть:Как скорректировать ввод со сканера в массив строк в Java?

String[] LettersOne = new String[] {"A", "B", "C"}; 
String[] LettersTwo = new String[] {"D", "E", "F"}; 
String[] LettersThree = new String[] {"G", "H", "I"}; 
String[] LettersFive = new String[] {"J", "K", "L"}; 
String[] LettersSix = new String[] {"M", "N", "O"}; 
String[] LettersSeven = new String[] {"P", "Q", "R", "S"}; 
String[] LettersEight = new String[] {"T", "U", "V"}; 
String[] LettersNine = new String[] {"W", "X", "Y", "Z"}; 

Scanner input = new Scanner(System.in); 
System.out.print("Enter an uppercase letter: "); 
String Letter = input.next(); 

То, что я хочу сделать, это так, что все прописные буквы пользователь вводит, он напечатает назначенную цифру (которая у меня есть еще предстоит сделать).

Итак, если письмо от чего-то из LettersOne, тогда система распечатает назначенное число.

Я новичок в программировании, поэтому я все еще участвую. Это можно сделать? Как?

+0

где назначенный номер? – evanwong

+0

@evanwong Я еще этого не сделал. Я просто хотел, чтобы система распечатывала присвоенный номер, а не просто присваивала номер группе букв в массиве строк. –

+0

@evanwong в String [] name, я бы предположил. – Compass

ответ

2

Ваш подход будет работать, но он будет очень грязным. Вместо этого я предложил бы HashMap, который позволит вам связать свои строки с целыми числами, на которые они указывают.

Вы можете начать с нуля:

HashMap<String, Integer> myMap = new HashMap<String, Integer>(); 
myMap.put("A", 1); 
myMap.put("B", 1); 
myMap.put("C", 1); 
myMap.put("D", 2); 
// and so on 

В качестве альтернативы, вы можете сохранить свои массивы и сделать это:

HashMap<String, Integer> myMap = new HashMap<String, Integer>(); 
for(String letter : LettersOne) { //agh, please use camel case! 
    myMap.put(letter,1); 
} 
for(String letter : LettersTwo) { //agh, please use camel case! 
    myMap.put(letter,2); 
} 

Это позволяет хранить и связывать отдельные буквы на номера. Поскольку это опыт обучения, я дам вам прочитать документацию, чтобы определить, как получить int.

0

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

Enter an uppercase letter: X 
Array number: 8; letter number 2 

Вот код:

String[] lettersOne = {"A", "B", "C"}; 
String[] lettersTwo = {"D", "E", "F"}; 
String[] lettersThree = {"G", "H", "I"}; 
String[] lettersFour = {"J", "K", "L"}; 
String[] lettersFive = {"M", "N", "O"}; 
String[] lettersSix = {"P", "Q", "R", "S"}; 
String[] lettersSeven = {"T", "U", "V"}; 
String[] lettersEight = {"W", "X", "Y", "Z"}; 
boolean found; // set to true once we've found the letter. 

String[][] arrayOfArrays 
     = {lettersOne, lettersTwo, lettersThree, lettersFour, 
      lettersFive, lettersSix, lettersSeven, lettersEight}; 

Scanner input = new Scanner(System.in); 
System.out.print("Enter an uppercase letter: "); 
String letter = input.next(); 

found = false; // we haven't found it yet. 

// loop through each of our arrays, and loop through each letter in each array. 
for(int arrayNum = 0; (arrayNum < arrayOfArrays.length) && !found; arrayNum++) { 
    // look through this array 
    String[] thisArray = arrayOfArrays[arrayNum]; 
    for(int letterNum = 0; letterNum < thisArray.length; letterNum++) { 
     String thisLetter = thisArray[letterNum]; 
     if (thisLetter.equalsIgnoreCase(letter)) { 
      System.out.println("Array number: " + (arrayNum + 1) + "; letter number " + (letterNum+1)); 
      found=true; 
      break; 
     } 
    } 
} 
Смежные вопросы