【问题标题】:Reading a string in Character array without using any String function, not even charAt in Java在不使用任何字符串函数的情况下读取字符数组中的字符串,甚至在 Java 中也不使用 charAt
【发布时间】:2014-09-20 14:44:16
【问题描述】:

我想在不使用任何 String 类函数的情况下读取 char 数组中的字符串,甚至不使用 Java 中的 charAt()、lenght()。我知道一种方法 char c=(char) System.in.read()。但是在这种情况下,即使输入单个字符,用户字符也会在命令行上写一个完整的句子。我希望该用户能够键入一个字符,然后我可以对其进行一些操作,然后在同一行上的下一个字符....(就像我们在 c++ 中所做的那样)。请给我一些建议。我想要一个类似 c++ 的代码

// c++ code
char c, d[50];
cin.get(c); 
int i=0;
while(c != '\n')
{
    d[i++]=c;
    ...           //any expressions
    ...
    cin.get(c); 
}

【问题讨论】:

  • 避免惹恼 Java 程序员的第一个提示:它是 Java,而不是 JAVA。
  • 您的 C++ 代码有缺陷。 i 未初始化。
  • 你为什么要这样做,因为java用String方法简化了它
  • 听起来你真正要求的是:“我可以在不等待换行符的情况下从控制台读取一个字符吗” - 这几乎没有什么可做的with“在不使用任何字符串函数的情况下读取字符数组中的字符串”
  • 您是否还要求用户输入char 并在等待另一个字符时执行一些操作? IE 多线程?

标签: java c++ arrays string


【解决方案1】:

一次处理一个字符并不容易。

请参阅 SO thisthis。您可能会遇到一些令人头疼的问题并在特定操作系统上解决此问题并且没有来自System.in 的数据,而是来自您自己的结构。如果您找到一种在每次击键时刷新System.in 的方法,您的问题就解决了。据我所知,您无法从 Java 注册键盘 IRQ。

您的 no-String 要求很简单,因为您可以使用与 C++ 中相同的结构。问题在于cin.get() 背后的机制,Java 中没有类似的机制。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-05-03
    • 1970-01-01
    • 2015-07-18
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多