Basiclly我需要设置一个程序,创建一个以特定字母开头的char矢量(大小为n),并将其余字母填入以下字母,如下所示:sequence(' c',3)→ {' c',' d',' e'}
我的代码出了什么问题?
class Aula6{
static char[] sequence(char c, int n){
char[]v=new char[n];
v[0]=c;
for (int i=1;i<n;i=i+1){
v[i] = (char)((int)v[i]+1);
}
return v;
}
}
我希望我足够清楚,我的英语是terribad:S
答案 0 :(得分:0)
这就是你写它的方式;
static char[] sequence(char c, int n) {
char[] ret = new char[n];
for (int i = 0; i < n; i++)
ret[i] = c++;
return ret;
}
在这种情况下,Java会为你做演员。
答案 1 :(得分:0)
我相信你遇到的问题是你的索引已关闭。例如,您试图将v [1]的值设置为比之前的v [1]多1,而不是v [0]的值。 Java会自动将数组的值设置为“零值”,在这种情况下为(char)0
。所以v [1]从(char)0
变为(char)1
。您的解决方案的问题在于您在编制索引时会被一个人关闭。如果您执行System.out.println(v);
,则只能看到第一个字符。这是因为前32个(我认为)ASCII字符中的大多数是控制字符,并且在打印时通常不会显示。正如Peter Lawrey所说,Java可以为你处理很多演员。
public static char[] sequence(char c, int n) {
char[] v = new char[n];
v[0] = c;
for(int i = 1; i < n ;i++) {
//To see what's going on with your methodology
//System.out.println( "Initial: " + (int)v[i]);
//v[i] = (char)((int)v[i]+1);
//System.out.println( "Updated: " + (int)v[i]);
//This would fix your code
v[i] = (char)((int)v[i-1] + 1); //not v[i]
}
}