Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/string/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 弦与环练习测试_Java_String_Loops_Indexing_String Concatenation - Fatal编程技术网

Java 弦与环练习测试

Java 弦与环练习测试,java,string,loops,indexing,string-concatenation,Java,String,Loops,Indexing,String Concatenation,我对这道试题有点困惑。我制作了一张I、j和字符串值的图表。我得到了“nbearig”,但我的运行时正在打印数字。我不确定哪里出了错++i,-j表示它们在for循环之后的代码之前递增/递减,对吗 public class AlGore { public static void main(String[] args) { String mystery = "mnerigpaba"; String solved = ""; int len = m

我对这道试题有点困惑。我制作了一张I、j和字符串值的图表。我得到了“nbearig”,但我的运行时正在打印数字。我不确定哪里出了错++i,-j表示它们在for循环之后的代码之前递增/递减,对吗

public class AlGore {
    public static void main(String[] args) {
        String mystery = "mnerigpaba";
        String solved = "";
        int len = mystery.length();
        for (int i = 0, j = len - 1; i < len/2; ++i, --j) {
            solved += mystery.charAt(i) + mystery.charAt(j);
        }
        System.out.println(solved);
    }
}
公共类算法{
公共静态void main(字符串[]args){
字符串谜=“mnerigpaba”;
字符串“”;
int len=summary.length();
对于(int i=0,j=len-1;i
您正在执行整数数学(因为
char
是一个

这样您就可以执行
字符串
串联。

神秘.charAt(i)+神秘.charAt(j)将添加这两个字符的数值。您可以通过在以下内容之前添加
“”+
来强制字符串连接:

solved += "" + mystery.charAt(i) + mystery.charAt(j);
我不确定哪里出了错++i,-j表示它们在for循环之后的代码之前递增/递减,对吗

public class AlGore {
    public static void main(String[] args) {
        String mystery = "mnerigpaba";
        String solved = "";
        int len = mystery.length();
        for (int i = 0, j = len - 1; i < len/2; ++i, --j) {
            solved += mystery.charAt(i) + mystery.charAt(j);
        }
        System.out.println(solved);
    }
}
1) 它们分别被预加/预减

2) 它发生在每次执行循环体之后

我的编译器正在打印数字

不,不是。编译器正在编译你的代码!!!JVM正在打印数字。。。当你运行代码时

要了解原因,请仔细查看以下内容:

 solved += mystery.charAt(i) + mystery.charAt(j);
这相当于

 solved = solved + ( mystery.charAt(i) + mystery.charAt(j) );
现在,括号中的表达式执行字符与字符的数字相加。根据Java表达式的规则,这将给出一个
int
值。所以整个表达式变成:

 solved = String.concat(
         solved, 
         Integer.toString(mystery.charAt(i) + mystery.charAt(j));

我认为charAt(I)函数将返回一个字符串

否。它返回一个
char
。。。就像方法名“charAt”所暗示的那样<代码>字符串和字符是根本不同的类型



注释:这是一个很好的试题,它测试您对循环的理解程度,以及您对Java表达式语义的理解程度。

所以我被告知这是一个积分数学。我认为charAt(I)函数将返回一个字符串?例如,第一种情况是I=1,j=9。因此,它将是String.concat(已解,Integer.toString(summary.charAt(1)+summary.charAt(9))summary.charAt(1)=“n”summary.charAt(9)=“b”如何得到这些的整数值?是“a”=1,“b”=2?等等?我的书并没有很好地解释这个概念。不准确。
summary.charAt(1)=“n”和summary.charAt(9)='b'
。这些值是
char
。您可以通过将它们提升为整数并添加它们来添加它们。结果是
int
。我想我可能不太理解charAt函数。在我的书中,它被定义为一个包含索引(整数)的函数参数并返回与该索引相对应的字符串中的字符。是否有我遗漏的内容?您没有遗漏有关
charAt
的任何内容。您缺少的是对Java表达式如何工作的正确理解。而且(显然)
string
char
是根本不同的。