Я пишу программу, которая вводит список чисел, разделенных запятыми, и суммируя общее число чисел. Например, у меня есть строка «10, 20, 30, 40, 50»Использование символов в качестве разделителя для StringTokenizer в Java
Я хочу извлечь каждое число «10» «20» «30» «40» «50» отдельно от строки и найти сумма списка номеров.
Я нашел решение, однако, я считаю, что мой код немного грязный, и когда я вернусь и посмотрю на него, у меня будет довольно много «WTF» за минуту.
Так,
мне было интересно, если есть лучший способ, чтобы написать следующую строку:
StringTokenizer inputTokenizer = new StringTokenizer(input, "- ,\\n\\r\\t\\b\\fabcdefghijklmnopqrstuvwxyz");
Моя цель состоит в том, что я хочу, чтобы программа использовать каждый символ, который является не число как разделитель для StringTokenizer. Так, например, строка "11abc33"
должна делиться на "11"
и "33"
.
Вот мой исходный код, что я придумал
public static void main(String[] args) {
do {
//Prompts user to enter a series of numbers and stores it in the String "input"
String input = JOptionPane.showInputDialog("Enter a series of numbers separated by commas.");
//total stores the sum of each number entered
int total = 0;
if ((input != null)) //checks if the user didn't cancel or quit the program
{
//sets every alphabetical character in the input String to lowercase
input = input.toLowerCase();
//creates a StringTokenizer that uses commas and white spaces as delimiters
StringTokenizer inputTokenizer = new StringTokenizer(input, "- ,\\n\\r\\t\\b\\fabcdefghijklmnopqrstuvwxyz");
//sums the total of each number entry
while (inputTokenizer.hasMoreTokens()) {
total = total + Integer.parseInt(inputTokenizer.nextToken());
}
} else {
//exit the program because the user hit cancel or exit
System.exit(0);
}
//display the sum of the total number entries
JOptionPane.showMessageDialog(null, "Total: " + total);
} while (true);
}
так что вы хотите разбить входную строку, используя пробел или запятую между цифрами? –
Да или любой нецифровой символ –
Ваши разделители кажутся сумасшедшими сложными, если вы хотите разделить только запятые. И если вы хотите использовать все эти разделители, вы можете проверить метод String.split() и использовать регулярное выражение, которое может выразить все это в гораздо более чистом синтаксисе. –