由于我不熟悉Java,所以我不熟悉处理这种类型的任务的所有方法。我在高中时学过C和C#,但几天前我刚开始学习Java。
任务是这样的:
编写一个读取10个单位整数的程序并显示一个字符串 使用编码方案的10个字符: 数字对应字符 0-一个 1-B 2-C ...... 9-J 例如,如果输入包含10位数字1 8 6 1 0 3 1 8 5 5,则应用程序 回应“bigbadbiff。”
因为我最初从C和C#移动,所以我很难让用户输入数组的整数,但我弄明白了。这就是我到目前为止所做的。
import java.util.*;
public class UnsualCoding
{
public static void main (String[] args)
{
Scanner util = new Scanner(System.in);
int[] x = new int[5];
int counter = 0;
for(int i = 0; i < x.length && util.hasNextInt(); i++)
{
x[i] = util.nextInt();
counter++;
}
System.out.println("\n\n");
System.out.println("Our array looks like");
for(int i = 0; i < x.length; i++)
{
System.out.println(x[i]);
}
System.out.println("\n\n");
}
}
我应该创建一个列表,将数组中的内容复制到它并进行更改,还是应该以不同的方式处理此问题?我可以将数组转换为字符串吗?另外,如何将字符绑定/分配给给定的数字?
谢谢。
答案 0 :(得分:1)
由于只有10种可能性,您可以将要编码的字符放入数组中,并使用int输入作为该数组的索引。
char[] y = new char[]{'a','b','c','d','e','f','g','h','i','j'};
然后,代码中唯一可以改变的部分就是打印出来的部分:
System.out.println(y[x[i]]);
虽然您可能希望将x数组更改为任意长度。
答案 1 :(得分:1)
你可以这样做:
Scanner input = new Scanner(System.in);
int count = 10;
StringBuilder result = new StringBuilder(count);
for(int i = 0; i < count; i++) result.append((char)(input.nextInt() + 'a'));
System.out.println(result);
<强> INPUT:强>
1 8 6 1 0 3 1 8 5 5
<强>输出:强>
bigbadbiff
答案 2 :(得分:0)
您可以Map每个数字值到一个字母。然后从地图中拉出输入字符串中找到的每个数字。您将需要一个String来跟踪所有检索到的字符。之后,您可以返回已创建的字符串。
答案 3 :(得分:0)
首先 - 你需要某种代表它们的数字和字符之间的映射。当您需要映射时,最好拥有Map
!
Map <Integer, Character> digitToCharacter = new HashMap<Integer, Character>();
char baseCharacter = 'a';
for (int i = 0; i< 10 ; i++) {
digitToCharacter.put(i, baseCharacter++);
}
System.out.println("--" + digitToCharacter.get(1));
在打印内容期间:
for(int i = 0; i < x.length; i++)
{
System.out.println(x[i]);
}
你只需要从地图中获取价值:
for(int i = 0; i < x.length; i++)
{
System.out.println( digitToCharacter.get(i)));
}
但是因为你需要String
,你不必将值写入输出 - 你需要将它们附加到单个字符串。
String result = null;
for(int i = 0; i < x.length; i++)
{
result += digitToCharacter.get(i)); // that isn't performace optimal, but it's enough and good for begginer
}
答案 4 :(得分:0)
我应该创建一个列表,将数组中的内容复制到它并进行更改,还是应该以不同方式处理此问题?
您可以使用列表来累积结果,也可以在累积结果时打印结果(您可以使用System.out.print(ch)
打印单个字符)。
另外,如何将字符绑定/分配给给定的数字?
您可以声明:
char[] symbols = {'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j'};
然后,symbols[d]
是数字symbol
的{{1}}。
或者您可以在unicode中使用它,小写字母按字母顺序占用连续的字符代码范围,并使用算术计算下一个字符的代码点:d
;