Java中的文本数组

Java中的文本数组,java,arrays,Java,Arrays,我正在为一个班级做一个项目,想知道是否有人能给我指出正确的方向。我以前使用过Java,但是已经有一段时间了,我真的很生疏了。该程序的目的是提示用户输入以字母表示的电话号码(例如呼叫总部为225-5466),然后该程序将根据输入的字母显示电话号码 我们应该将用户输入的字母存储到一个数组中,然后将这些字母转换为实际的电话号码。这是我目前一直坚持的观点,我只处理过由数字组成的数组,所以不知道如何设置这个数组。我假设每个索引都是一个字母,但是如何将用户输入的字符串分解为单个字符呢 我仍然在思考这个程序应

我正在为一个班级做一个项目,想知道是否有人能给我指出正确的方向。我以前使用过Java,但是已经有一段时间了,我真的很生疏了。该程序的目的是提示用户输入以字母表示的电话号码(例如呼叫总部为225-5466),然后该程序将根据输入的字母显示电话号码

我们应该将用户输入的字母存储到一个数组中,然后将这些字母转换为实际的电话号码。这是我目前一直坚持的观点,我只处理过由数字组成的数组,所以不知道如何设置这个数组。我假设每个索引都是一个字母,但是如何将用户输入的字符串分解为单个字符呢

我仍然在思考这个程序应该如何工作,并将其写在纸上,所以还没有真正开始编码,所以我很抱歉没有任何代码可以共享。但我认为,一旦将电话号码的字母表示放入数组中,就需要这样做:

为每个字母声明变量,如

int a = 1 
int b = 1
int c = 1
int d = 2
或者有没有更有效的方法?然后对每个索引使用if语句,如

if [0] == a || b || c 
    [0] = 1
if [0] == d || e || f
    [0] = 2
等等。就像我说的,我真的很生疏,我只是想在把代码扔到屏幕上之前想办法解决这个问题,哈哈。任何指点都将不胜感激

只需使用:

然后可以从字符串中获取单个字符

您可以使用一系列
if
语句来查看哪些字符映射到哪些数字。但还有更优雅的方法。我不确定您是否使用了
Map
,但您可以设置一个
Map
,将字母映射到其整数表示形式。然后,您只需迭代字符串中的字符并查找它们的值

因为这是家庭作业,所以这是我认为适当的信息。利用我给你的,你应该能想出一个算法。即使不知道最终结果会是什么样子,也要开始编写代码。这将为您带来以下优势:

  • 让你对这个问题有一个更清晰的认识
  • 将使您熟悉问题空间
  • 将帮助您可视化并理解您的问题和算法

您可以做的是创建一个二维数组和方法来对照它检查输入。例如,您可以执行以下操作:

创建一个长度为10的数组
numbers
。每个索引对应一个您必须呼叫的号码。 现在,数字数组的每个条目都是一个字符数组。所以最后你会得到这样的结果:
numbers=[['w/e你想要的0']、['a'、'b'、'c']、['d'、'e'、'f']、['g'、'h'、'i']等等]

解析输入字符串时,使用如下方法比较每个字符:

private int letterToNumber(char c){
    for(i = 0; i < numbers.length; i++)
        if(contains(numbers[i], c) return i;
}

也许可以尝试使用散列。提供一个输入输出示例!用户输入了什么,对于这个例子,您希望返回什么?也许在屏幕上抛出代码实际上是正确的方法。这是一个足够简单的程序,所以请与你内心的极客保持联系,让项目在本能的基础上有机地流动。你将从锻炼中获得更多,通过忍受问题,而不是在你真正需要帮助之前寻求帮助。保存问题以备遇到特定问题时使用。使用
string.tocharray()
将字符串拆分为字符。你还有什么特别的问题,我不想给你一个完整的答案:MarsAtomic的-)+1。谢谢你的输入。这是我到目前为止在Davemorissey遇到的唯一一件事,剩下的主要是看看是否有一种比我列出的更有效的方法来做我需要做的事情,因为我已经有一段时间没有使用Java了,而当我在第一门计算机科学课程中处理Java时,我实际上并不擅长它。我最近的编程经验是VisualBasic,这对我没有帮助,所以我“我试着把一切都写在那本书里。再次感谢!非常感谢你!这正是我所寻求的帮助,为我编写的程序对我未来的程序没有多大帮助:-)很高兴能帮助我!祝你好运!:)还有一件事,因为数组中的字母是由用户输入的,所以我需要首先为这个字符串设置一个变量吗?我知道通常在获取输入时,您会添加一条语句,如int variable=input.nextInt();我想知道这在这里如何适用?是的。您将把用户输入读入
字符串
变量。
private int letterToNumber(char c){
    for(i = 0; i < numbers.length; i++)
        if(contains(numbers[i], c) return i;
}
private boolean contains(char[] chars, char c){
    for(char x : chars)
        return(x == c)? true; false;
}