Нашли или выдавили из себя код, который нельзя назвать нормальным,
на который без улыбки не взглянешь?
Не торопитесь его удалять или рефакторить, — запостите его на
говнокод.ру, посмеёмся вместе!
package practice;
import java.io.IOException;
import static java.lang.System.in;
import java.util.Scanner;
public class Practice {
static int j = 0;
public static char [] c() {
String s;
Scanner reader = new Scanner(in);
s = reader.next();
byte n = (byte) (s.length()+5);
char [] c;
c = new char[n];
for(int i = 1;i<=s.length();i++) {
c[i] = s.charAt(i-1);
}
return c;
}
public static int slag(char [] c) throws IOException {
int i = 0;
j++;
if(c[j]>='0' && c[j]<='9') {
while(c[j]>='0' && c[j]<='9') {
i = i*10 + c[j] - '0';
j++;
}
}
switch (c[j]) {
case '+':
case '-':
return sum(c,i);
case '(':
return slag(c);
case ')':
return i+sum(c,i)+slag(c);
case '.':
return i;
default:
break;
}
return i;
}
public static int sum(char [] c,int i) throws IOException {
if(c[j]=='+')
return i+slag(c);
else
if(c[j]=='-')
return i-slag(c);
return 0;
}
public static void main(String[] args) throws IOException {
char [] c;
c = c();
System.out.println(slag(c));
}
}
Рекурсивный String-калькулятор . операции + - .
Школьный практикум.
вместо посимвольного считывания используется массив .
Как реализовать посимвольное считывание в java .
Есть ли функция типа cin или read ?
Кодировка собьётся. System.in.read() возвращает byte, его нельзя приводить к char без перекодирования системной кодировкой, что и делает InputStreamReader.
>просто люди думают что им в поток буковки текут
В винде - текут (про юникод слышал?). Ридеру надо ручками кодировку указывать? Сам он ее из потока брать не умеет?
никакой корреляции не существует между юникодом и тем фактом что в винде (и не только) есть STDIN и STDOUT. Признайся, ты это просто так написал, ради красного словца?
Кстати, в виндовой консоли _нет_ нормального юникода
просто стрим -- штука байториентированная (вот прямо как стриммер))
а чтобы превратить байты в буквы нужен ридер (ну и кодировка конечно)
просто люди думают что им в поток буковки текут
а в компьютере нету буковок
там есть байты
В винде - текут (про юникод слышал?). Ридеру надо ручками кодировку указывать? Сам он ее из потока брать не умеет?
Кстати, в виндовой консоли _нет_ нормального юникода
У - Уникод.
http://www.slate.com/content/dam/slate/articles/life/drink/2011/11/111205_DRINK_AppleJackBourbon_02.jpg.CROP.thumbnail-small.jpg
Не, это просто местный дибил.