2011-05-10 12 views
5

Załóżmy, że prosisz użytkownika o podanie danych wejściowych za pośrednictwem aplikacji konsolowej w Javie. Robią i uderzają Enter. Dostajesz ciąg i robisz coś w odpowiedzi. Powiedz, że obliczysz pewną wartość na podstawie danych wprowadzonych przez użytkownika i wydrukujesz.Jak wykonać kopię zapasową linii po nowym wierszu przesłanym przez użytkownika? Java

Jak mogę wydrukować odpowiedź w tej samej linii, co dane wejściowe użytkownika? Chciałbym (ewentualnie) usunąć nowy znak linii i wydrukować odpowiedź obok jego danych wejściowych.

Prosimy radzić, jak to zrobić, używając języka Java.

Dziękuję.

Odpowiedz

1

starałem się wdrożyć to z pomocą jcurses biblioteki i tu jest demo czegoś szukasz

import jcurses.system.CharColor; 
import jcurses.system.InputChar; 
import jcurses.system.Toolkit; 

public class TestClass { 

    public static void main(String[] args) { 

     try { 
      CharColor printColor = new CharColor(CharColor.BLACK, CharColor.WHITE); 


      int i = 0; 
      int j = 0; 
      while (true) { 
       StringBuilder str = new StringBuilder(); 
       InputChar c = null; 

       do { 
        c = Toolkit.readCharacter();     //Read each character 
        if (c.getCharacter() != 10) {     //Do not print character if Return key 
         str.append(c); 
         Toolkit.printString(String.valueOf(c), i++, j, printColor); //Print character as you type 
        } 
       } while (c.getCharacter() != 10); 
       Toolkit.printString(processInput(str.toString()), i, j++, printColor); 
       i = 0; 
       if (j == Toolkit.getScreenHeight()) { 
        Toolkit.clearScreen(printColor); 
        j = 0; 
       } 
      } 
     } catch (Exception e) { 
      e.printStackTrace(); 
     } 
    } 

    public static String processInput(String input) { 
     return " Input processed"; 
    } 
} 
0

można z ANSI-Codes. W Linuksie nigdy nie miałem problemu z ich użyciem, ale w systemie Windows najpierw trzeba zainstalować ANSI.SYS.

import java.util.Random; 

public class AnsiMove 
{ 
     public AnsiMove() 
     { 
       Random random = new Random(); 
       System.out.print ("ESC[2J"); 

       for (int i = 0; i < 10000; ++i) 
       { 
         int y = random.nextInt (23) + 1; 
         int x = random.nextInt (79) + 1; 
         char c = (char) (random.nextInt (95) + 32); 

         gotoXY (x, y); 
         System.out.print (c); 
         pause (1); 
       } 
     } 

     void pause (int p) 
     { 
       try 
       { 
         Thread.sleep (p); 
       } 
       catch (InterruptedException e) 
       { 
         System.err.println (e); 
       } 
     } 

     void gotoXY (int x, int y) 
     { 
       System.out.print ("ESC[" + y + ';' + x + 'H'); 
     } 

     /** */ 
     public static void main (String args[]) 
     { 
       new AnsiMove(); 
     } 
} 
Powiązane problemy