EDIT: Право, я забыл сформулировать проблему - это тот факт, что я получаю 0
в качестве вывода.Преобразуйте числовое слово (String) в его целое значение
КОНТЕКСТ
Моя программа стремится занять пользователем введенный номер-слово (1- 99) и вывод его в виде целого числа (то есть тридцать четыре = 34). Я не могу понять, где ошибка в моем коде, и нужна помощь:
Scanner scInput = new Scanner(System.in);
String word = scInput.nextLine(); //number in word-form (i.e. twenty six)
char[] charArray = word.toCharArray();//string to char array for word^
int divider = 0; //position of hyphen/space in charArray
Всех 2-слово номер состоит из десятков дорожит & значения из них. Предполагая правильный синтаксис [english], слово перед дефисом/пробелом divider
- это десятки, а следующее слово - divider
.
МАССИВЫ
//word values - components & syntax (1-99)
//ONES
public static final String[] wONES = {"one","two","three","four","five","six","seven","eight","nine"};
//TENS
public static final String[] wTENS = {null,"twenty","thirty","forty","fifty","sixty","seventy","eighty","ninety"};
//TEENS
public static final String[] wTEENS = {"ten", "eleven", "twelve", "thirteen","fourteen", "fifteen", "sixteen", "seventeen", "eighteen", "nineteen"};
Я организовал все слова-компоненты в 3-х различных массивов: единицы, десятки и подростков.
//equivalent integer-array of above String arrays
//ONES
public static final int[] nONES = {1,2,3,4,5,6,7,8,9};
//TENS
public static final int[] nTENS = {0,20,30,40,50,60,70,80,90};
//TEENS
public static final int[] nTEENS = {10,11,12,13,14,15,16,17,18,19};
Я создал 3 другие массивы, которые являются такими же, как выше трех массивов, за исключением того, что они хранят целые значения.
КОД
Здесь отрывает пользователь вводятся строки на две секции: десятки и те. Поэтому, если число равно 72: 70 = десятки и 2 = единицы.
int tensValue = 0; //number's tens value (i.e. 30)
int onesValue = 0; //ones value (i.e. 3)
char[] tensArray = null; //array storing tens section of word (before divider)
for (int u = 0; u < divider; u++){
tensArray[u] = charArray[u];
}
String tens = new String(tensArray); //convert char array to String
char[] onesArray = null; //array storing ones section of word (after divider)
for (int u = divider + 1; u > divider && u < charArray.length; u++){
onesArray[u] = charArray[u];
}
String ones = new String(onesArray);
//searches for matches in String array for tens
for(int u = 0; u < wTENS.length; u++){
if(tens.equals(wTENS[u])){
tensValue = nTENS[u];
total += tensValue;
}
}
//searches for matches in String array for ones
for(int u = 0; u < wONES.length; u++){
if(ones.equals(wONES[u])){
onesValue = nONES[u];
total += onesValue;
И проблема? – Guy
Ну для начала 'char [] tensArray = null;' должно быть что-то вроде 'char [] tensArray = new char [10];' – user2004685