这个 Java 片段是如何工作的?
How does this Java snippet work?
我正在学习Java作为初学者,但是我没有看懂这个脚本。
我有一个 'look and say' 作业。
谁能告诉我这是怎么回事?
public class App {
public static void main(String[] args) {
for (int k = 0, len = args.length; k < len; k++) {
int i, j;
StringBuilder preNumber = new StringBuilder("1"); // what is the use of StringBuilder?
StringBuilder AnsNumber = new StringBuilder();
int n = Integer.parseInt(args[k]);
for (i = 1; i <= n; i++) {
AnsNumber = preNumber;
int l = preNumber.length(), cnt = 1;
StringBuilder nxtNumber = new StringBuilder();
for (j = 1; j < l; j++) {
char ch = preNumber.charAt(j);
if (preNumber.charAt(j - 1) == preNumber.charAt(j)) // what does charAt(j) means?
{
cnt++;
}
else
{
nxtNumber.append(cnt);
//why '+' isnot using as concatination?
nxtNumber.append(preNumber.charAt(j - 1));
cnt = 1;
}
// System.out.println(nxtNumber);
}
nxtNumber.append(cnt);
nxtNumber.append(preNumber.charAt(j - 1));
preNumber = nxtNumber;
}
System.out.println(AnsNumber);
}
}
}
如果您查看 Java 文档,您可以轻松找到答案。
- StringBuilder class 用于创建可变字符串。它比普通的 String class (不可变)表现得更好。这里的原因:What is difference between mutable and immutable String in java
- charAt(j) returns 字符串中第 j 个索引处的字符(索引从 0 开始)。
- '+'用于拼接String对象。 append() 用于连接 StringBuilder 对象(在 StringBuilder 对象的末尾添加一些 String)。
我正在学习Java作为初学者,但是我没有看懂这个脚本。
我有一个 'look and say' 作业。
谁能告诉我这是怎么回事?
public class App {
public static void main(String[] args) {
for (int k = 0, len = args.length; k < len; k++) {
int i, j;
StringBuilder preNumber = new StringBuilder("1"); // what is the use of StringBuilder?
StringBuilder AnsNumber = new StringBuilder();
int n = Integer.parseInt(args[k]);
for (i = 1; i <= n; i++) {
AnsNumber = preNumber;
int l = preNumber.length(), cnt = 1;
StringBuilder nxtNumber = new StringBuilder();
for (j = 1; j < l; j++) {
char ch = preNumber.charAt(j);
if (preNumber.charAt(j - 1) == preNumber.charAt(j)) // what does charAt(j) means?
{
cnt++;
}
else
{
nxtNumber.append(cnt);
//why '+' isnot using as concatination?
nxtNumber.append(preNumber.charAt(j - 1));
cnt = 1;
}
// System.out.println(nxtNumber);
}
nxtNumber.append(cnt);
nxtNumber.append(preNumber.charAt(j - 1));
preNumber = nxtNumber;
}
System.out.println(AnsNumber);
}
}
}
如果您查看 Java 文档,您可以轻松找到答案。
- StringBuilder class 用于创建可变字符串。它比普通的 String class (不可变)表现得更好。这里的原因:What is difference between mutable and immutable String in java
- charAt(j) returns 字符串中第 j 个索引处的字符(索引从 0 开始)。
- '+'用于拼接String对象。 append() 用于连接 StringBuilder 对象(在 StringBuilder 对象的末尾添加一些 String)。