2014-09-21 2 views
1
public class Registration { 

    public static void main(String[] args) { 

      final String MY_DELIMITER = "','"; 
      boolean tryAgain = true; 
      String fName = ""; 
      String A = fName.substring(0,2); 
      String lName = ""; 
      int lNameLength = lName.length(); 
      String B = lName.substring(lNameLength-4,lNameLength); 
      String address = ""; 
      String zip = ""; 
      String C = zip.substring(0,5); 
      String age = ""; 
      String D = age.substring(0,1); 
      String gender = ""; 
      String race = ""; 
      String regList = ""; 
      Scanner myScanner = new Scanner(System.in); 
      boolean showList = false; 

     // Get input from the user until they type "q"  
     // For each input check for "q" 
     // if not q, append the input 
     // to the existing String + the delimiter  
     while(tryAgain) 
     { 
       System.out.println("Name: (q to quit)"); 
       fName = myScanner.nextLine(); 
       System.out.println("Last Name: (q to quit)"); 
       lName = myScanner.nextLine(); 
       System.out.println("Addess: "); 
       address = myScanner.nextLine(); 
       System.out.println("Age: "); 
       age = myScanner.nextLine(); 
       System.out.println("Gender: "); 
       gender = myScanner.nextLine(); 
       System.out.println("Race: "); 
       race = myScanner.nextLine(); 

      if(fName.equals("q")) 
      { 
        tryAgain = false; 
      } 
      else 
      { 
       // Append new name to the list using a delimiter 
       regList = fName + lName + "\n" + address + "\n" + age + "\n" + gender + "\n" + race + MY_DELIMITER; 
      }   
     } // end of while() 

     System.out.println("Here is your registration:" + regList); 
     // Convert the String into an array, using the same delimiter 
     String[ ] regArray = regList.split(MY_DELIMITER); 

     // Ask the user if they want to display the contents of the array 
     // If "y" then display the list using a foreach loop 
     System.out.println("Would you like to see the registration from the Array? [y-n]"); 
     fName = myScanner.nextLine(); 

     myScanner.close(); 

     fName = fName.toLowerCase(); 

     showList = fName.equals("y")?true:false; 

     if(showList) 
     { 
      // Display the results using for each 
      System.out.println("Here is your registration from the array: "); 
      // Use a for each statement instead of the more complex for() loop 
      // for(int counter=0; counter < employeeArray.length; counter++) 
      for(String thisReg:regArray) 
      { 
        System.out.println(thisReg); 
        System.out.printf("USER ID: ", A + "-" + B + "-" + C + "-" + D); 
      } 
     } // end of if(showList) 
    } 
} 

Я пытаюсь извлечь из первых 3 букв входного Fname, поэтому я полагал, что я мог бы использовать fName.substring, чтобы сделать это, но это дает мне эту ошибку.fName.substring вне границ

Извините, я не добавил весь свой код, чтобы сэкономить время. По-видимому, это выглядело смущенным. В любом случае вход fName является именем пользователя. Не может ли быть в таком порядке?

+0

Как вы думаете, какими должны быть первые три буквы * пустой строки? .. – dasblinkenlight

+0

Что вводит имя? – ares

ответ

1

Erm ... ваша последовательность операций является подозрительной. Повсюду, на самом деле.

Посмотрите на следующее взаимодействие:

String fName = ""; 
String A = fName.substring(0,2); 

Вы объявляете пустую строку, то сразу взять подстроку него. Откуда вы получаете данные для подстроки? Здесь нет ничего подстроки: пустая строка имеет длину 0.

Вы должны быть определенного что вы помещаете данные в вашу строку, прежде чем принимать подстроку него. Использование Scanner проделало бы долгий путь здесь.

Или еще лучше, перемещая свой экземпляр myScanner в верхней части main, было бы намного понятнее, где это должно идти, и как оно должно работать.

0

Всегда проверяйте длину строки перед чем-либо подстрокой. Особенно, когда пользователь предоставляет вам эту переменную.

+0

Может быть, я этого не вижу, но как программа начинает получать значения? – Makoto

+0

Я новичок в java (obv.), Я привык объявлять переменные при кодировании кода. – Brownbagger11

0

Вы пытаетесь получить подстроку пустой строки.

String fName = ""; 
String A = fName.substring(0,2); // here fName is empty!!! 

Изменение Fname в некоторой фактической String, а также проверить длину String перед вызовом подстроку, чтобы убедиться подстроку размера вы хотите существует.

String fName = "somestring"; 
if(fName.length() >= 2) { 
    String A = fName.substring(0,2); 
    System.out.println(A); // prints out "so" 
} 

То есть дело со всеми другими вашими String с, а также.

+0

Ну, это я делаю много смысла !!! Спасибо – Brownbagger11

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