Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Java: Общие вопросы > Простое меню на Яве


Автор: Syltan 24.5.2010, 18:41
Не работает простое меню на Яве, пишу по книге код.
Не компилится, останавливается на 

Код

choice = (char)System.in.read(d);


Вот весь код:
Код

package java2;
public class Main {
    public static void main(String[] args)
    throws java.io.IOException{
char choice=5;
    String hello ="Привет";
    String charsetName="Cp866";
    System.out.write(hello.getBytes(charsetName));
do{
       System.out.println("Справка по:");
       System.out.println(" 1. if");
       System.out.println(" 2. switch");
       System.out.println(" 3. while");
       System.out.println(" 4. do-while");
       System.out.println(" 5. for\n");
       System.out.println(" Выберите интересующий пункт:");
       choice = (char)System.in.read(d);
}while(choice<'1' || choice>'5');
 System.out.println("\n");
 switch(choice){
     case '1':System.out.println("if:\n");
              System.out.println("if(условие  оператор;");
              System.out.println("else оператор;");
              break;
     case '2':
              System.out.println("switch: \n");
              System.out.println("switch(выражение) {");
              System.out.println(" case константа:");
              System.out.println(" последовательность операторов");
              System.out.println(" break;");
              System.out.println(" // ... ");
              System.out.println(" }");
     break;
     case '3':
               System.out.println(" while:\n");
               System.out.println(" while(условие) оператор;");
               break;
     case '4':
              System.out.println(" do-while:\n");
              System.out.println("do { ");
              System.out.println(" оператор");
              System.out.println(" } (условие);");
              break;
     case '5':
              System.out.println(" for:\n");
              System.out.println(" for(инициализация; условие; повторение)");
              System.out.println(" оператор");
              break;


 }
}
}




Автор: Syltan 24.5.2010, 19:14
Код

package java2;
public class Main {
    public static void main(String[] args)
    throws java.io.IOException{
    String hello ="Привет";
    String charsetName="Cp866";
    System.out.write(hello.getBytes(charsetName));
char choice;

do{
       System.out.println("Справка по:");
       System.out.println(" 1. if");
       System.out.println(" 2. switch");
       System.out.println(" 3. while");
       System.out.println(" 4. do-while");
       System.out.println(" 5. for\n");
       System.out.println(" Выберите интересующий пункт:");
       choice = (char)System.in.read();
}while(choice<'1' || choice>'5');
 System.out.println("\n");
 switch(choice){
     case '1':System.out.println("if:\n");
              System.out.println("if(условие  оператор;");
              System.out.println("else оператор;");
              break;
     case '2':
              System.out.println("switch: \n");
              System.out.println("switch(выражение) {");
              System.out.println(" case константа:");
              System.out.println(" последовательность операторов");
              System.out.println(" break;");
              System.out.println(" // ... ");
              System.out.println(" }");
     break;
     case '3':
               System.out.println(" while:\n");
               System.out.println(" while(условие) оператор;");
               break;
     case '4':
              System.out.println(" do-while:\n");
              System.out.println("do { ");
              System.out.println(" оператор");
              System.out.println(" } (условие);");
              break;
     case '5':
              System.out.println(" for:\n");
              System.out.println(" for(инициализация; условие; повторение)");
              System.out.println(" оператор");
              break;


 }
}
}



Вот так вроде работает, толкьо русская кодировка не отображается в командной строке. Как исправить?

Автор: susanin 24.5.2010, 21:03
Код

 System.out.write(hello.getBytes(Charset.forName("Cp866")));

надо вот так...правда работать будет только для слова "Привет"
для остальных случаев можно сделать как то так
Код

System.out.write("Справка по:\n".getBytes(Charset.forName("Cp866")));

Автор: dobrolub 24.5.2010, 21:28
попробуй :

Control Panel -> Regional and  Language Options -> Administrativ (tab) -> Change System Locale (choose Russian (Russia))

перезагрузка...

Автор: Syltan 25.5.2010, 02:09
Где такое выбирать?

Автор: susanin 25.5.2010, 02:56
Цитата(Syltan @  25.5.2010,  02:09 Найти цитируемый пост)
Где такое выбирать?

имелось ввиду "панель управления->язык и региональные стандарты->изменить местоположение" в самой Windows

Автор: LSD 25.5.2010, 13:03
http://forum.vingrad.ru/faq/topic-166033.html smile 

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)