我试图使用for循环将字符az输入到字符串数组中,但我没有太多运气将字符转换为字符串值,因此他们实际上会进入字符串数组。我一直得到null值作为我的输出。任何人都可以提供一些如何将字符放入字符串数组的提示吗? 这就是我到目前为止所做的:
String[] letters = new String[26];
for (char ch = 'a'; ch <= 'z'; ch++)
{
int i = 0;
letters[i] = String.valueOf(ch);
i++;
}
System.out.println(Arrays.toString(letters));
答案 0 :(得分:5)
String[] letters = new String[26];
int i = 0;
for (char ch = 'a'; ch <= 'z'; ch++)
{
letters[i] = String.valueOf(ch);
i++;
}
System.out.println(Arrays.toString(letters));
试试这个。 i = 0应该在循环之外。
答案 1 :(得分:0)
像Eran所说的那样将let navigationBar : UINavigationBar = { //Label to display the text
let navBar = UINavigationBar(frame: CGRect(x: 0, y: 0, width: 100, height: 50))
navBar.translatesAutoresizingMaskIntoConstraints = false
let navItem = UINavigationItem(title: "SomeTitle");
let doneItem = UIBarButtonItem(barButtonSystemItem: UIBarButtonSystemItem.done, target: nil, action: "selector");
let backItem = UIBarButtonItem(title: "Back", style: UIBarButtonItemStyle.plain, target: self, action: #selector(backAction(_:)));
//let backItem: UIBarButtonItem = backsItem
navItem.rightBarButtonItem = doneItem;
navItem.leftBarButtonItem = backItem;
navBar.setItems([navItem], animated: false);
return navBar;
}();
@IBAction func backAction(_ sender: Any?) {
self.navigationController?.popViewController(animated: true)
}
移到循环之外,或者只是不使用另一个计数器,但按顺序字符表示确定索引:
int i = 0;
此外,您不必使用其他本地变量,当然可以String[] letters = new String[26];
for (char ch = 'a'; ch <= 'z'; ch++) {
int index = (int) ch - 97;
letters[index] = String.valueOf(ch);
}
System.out.println(Arrays.toString(letters));
。
答案 2 :(得分:0)
每次插入字母[0],将变量i保持在循环外。
String[] letters = new String[26];
int i = 0;
for (char ch = 'a'; ch <= 'z'; ch++)
{
letters[i++] = String.valueOf(ch);
}
System.out.println(Arrays.toString(letters));
答案 3 :(得分:0)
for (char ch = 'a'; ch <= 'z'; ch++){
int i = 0;
letters[i] = String.valueOf(ch);
i++;
}
您需要了解它的作用:在每次迭代时,您将变量i
初始化为0
,这样您就永远不会在其他地方写字而不是字母[0]
你只需要将它设置为0,然后递增它,所以只需将指令放在循环之前
另一种简单的方法是:
char[] letters = "abcdefghijklmnopqrstuvwxyz".toCharArray();
答案 4 :(得分:0)
出于特定目的,使用Java 8 Streams,您甚至不需要循环。
String[] letters = IntStream.rangeClosed('a', 'z').mapToObj(i -> Character.toString((char)i)).toArray(String[]::new);
System.out.println(Arrays.toString(letters));
要打破它:
IntStream.rangeClosed(int, int)
从Stream
到第二个int
生成int
char
个,包括两个端点。我们使用它是因为没有CharStream类(出于某种原因),但我们仍然可以使用'a'
s 'z'
和int
,它们将被隐式转换为mapToObj
值。int
接受一个函数,该函数会将Stream
的每个int
转换为一个对象。这里有点混乱,因为从String
到int
没有单步转换,我们首先需要将int
解释为字符值。因此,我们将每个i
(名为char
)投射到char
,然后将其换成String
到i -> Character.toString((char)i)
的转换:{{1} }。这将为我们留下Stream<String>
。String[]
。 Stream
有toArray
方法,但这会给我们带来恼人的Object[]
结果。相反,我们将提供我们想要用于构建数组的方法。我们不想要任何花哨的内容,因此我们只需使用String
数组的标准初始值设定项:toArray(String[]::new)
。之后,letters
将等于String
个数组,每个a
将连续成为z
到String[] letters = new String[26];
for (char c = 'a'; c <= 'z'; c++) letters[c - 'a'] = Character.toString(c);
System.out.println(Arrays.toString(letters));
的字母。
如果您无法访问Java 8或者只是不喜欢上述解决方案,那么这里是上述代码的简化版本,无需索引:
char
在Java中,int
可被视为AAA
AAA
AA
BBB
BB
,因为在表面之下,它们都存储为数字。