繁体   English   中英

循环没有为字符串分配正确的值

[英]Loop doesn't assign string the correct value

我的程序中有一小部分无法正常工作,我无法弄清为什么

String KEY = "hello"
for (int h = 0; h < message.length(); h++)
{
    keyWord += KEY.charAt(h);
}

一旦运行循环,keyWord字符串将不包含字母,应该打个招呼,但是如果我绕过它而只在程序中使用KEY,它将可以正常工作。

有人可以告诉我我做错了什么吗?

更改

for (int h = 0; h < message.length(); h++)

for (int h = 0; h < KEY.length(); h++)

您正在尝试将KEY附加到关键字...,因此您需要检查其长度,而不是其他字符串。

我假设keyWord是一个字符串。 问题是当您这样做时:

keyWord += KEY.charAt(h);

表达式KEY.charAt(h)的类型为char ,它是一个整数值。 当使用+ (或+= )向字符串添加整数时,编译器会生成代码以添加整数值的字符串表示形式。 它不会附加字符本身。

现在,我了解您正在尝试做什么,正在创建密码。

public class Test {

     public static void main(String[] args){
           String key = "hello";
           String keyWord = "";
           String message = "asdfghj";
           for (int i = 0; i < message.length();i++)
           {
               keyWord += key.charAt(i %key.length());             
           }
           System.out.println(keyWord);
}
}

对于不确定%或模运算符的任何人,都将返回除法的余数。 例如4%5 = 4,因为4/5剩下4,因为它进入了0次。 现在6%5 = 1等于6/5 = 1 R1。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM