Допустим, у меня было довольно много (похожих) вопросов, но я не могу понять контекстное использование в следующем фрагменте кода, который я написал для элементарной задачи SPOJ (http://www.spoj.com/problems/ONP/):Методы сканера: next() vs nextLine()
import java.io.*;
import java.util.Stack;
import java.util.Scanner;
public class onp1 {
public static String postfixString(String expression) {
// Stack <Character> valueStack = new Stack <Character>();
Stack <Character> operatorStack = new Stack <Character>();
String output = "";
char[] tokens = expression.toCharArray();
for(char c : tokens) {
if(c == '('){
continue;
}
else if(c == '+' || c == '-' || c == '*' || c == '/' || c == '^') {
operatorStack.push(c);
continue;
}
else if(c == ')') {
output += operatorStack.pop();
continue;
}
else {
output += String.valueOf(c);
continue;
}
}
return output;
}
public static void main (String [] args)throws java.lang.Exception {
String inputString = "";
int n1;
Scanner in = new Scanner(System.in);
try
{
n1 = in.nextInt();
StringBuilder[] sb = new StringBuilder[n1];
for(int i = 0; i < n1; i++) {
sb[i] = new StringBuilder();
inputString = in.next();
sb[i].append(postfixString(inputString));
}
for(int i = 0; i < n1; i++) {
System.out.println(String.valueOf(sb[i]));
}
}
catch (Exception e) {
// System.out.println("");
System.out.println(e.getMessage());
// numberOfTestCases.next();
}
System.exit(0);
}
}
Если я использую nextLine() вместо следующего(), то SPOJ двигатель генерирует 'неправильный ответ' ответ.
Кроме того, существует проблема при использовании объекта StringBuilder вместо объекта String в функции postfixString (раньше я использовал объект StringBuilder; возвращал строку с использованием метода toString()).
Пожалуйста, игнорируйте логические несоответствия (я знаю, что есть несколько). Я уже убрал (большинство) из них. Что меня смущает nextLine()
vs next()
и StringBuilder vs String.
«Я не могу понять контекстное использование». Я не понимаю, о чем вы спрашиваете. 'next()' возвращает следующий токен (по умолчанию разделяется пробелом), а 'nextLine()' возвращает следующую строку. Если вы не покажете нам код с и без 'StringBuilder', я не вижу, как кто-то может помочь вам в этом. –