Java 在字符串中的颜色之间旋转
我正在尝试创建一个旋转颜色的Java 在字符串中的颜色之间旋转,java,string,algorithm,colors,Java,String,Algorithm,Colors,我正在尝试创建一个旋转颜色的字符串。每个字母都有不同的颜色,它们需要以线性方式旋转。文本将进入JLabel的内部 我构建了文本,以便在给定一个单词和一组颜色(字符串)的情况下创建它 String[]colors={“白色”、“蓝色”、“红色”}; 字符串word=“foo”; 字符串彩色文本; String[]字母=word.split((?!^)”//将文本拆分为独立文本。信件 coloredText=“”; for(int i=0,j=0;i=colors.length) j=0; colo
字符串。每个字母都有不同的颜色
,它们需要以线性方式旋转。文本将进入JLabel
的内部
我构建了文本,以便在给定一个单词和一组颜色(字符串)的情况下创建它
String[]colors={“白色”、“蓝色”、“红色”};
字符串word=“foo”;
字符串彩色文本;
String[]字母=word.split((?!^)”//将文本拆分为独立文本。信件
coloredText=“”;
for(int i=0,j=0;i=colors.length)
j=0;
coloredText+=String.format(“%s”,颜色[j],字母[i]);
}
彩色文本+=“”;
这将导致一个字符串的foo带有白色的F
、蓝色的O
和红色的finalO
当然,如果颜色比字母少,它们就会继续旋转
现在我有了一个定时器
来旋转颜色,但我想不出执行该操作的算法。
基本上,每种颜色都应该取代下一种颜色,最后一种颜色取代第一种颜色
例如:
当然,这必须适用于任意数量的给定字母和颜色,不适合的颜色将被忽略。(一个由3个字母和10种颜色组成的单词将只使用前3种颜色)
我尝试过使用.replace()
,但是regex
对我来说有点太难了
有什么想法吗?您可以在0和colors.length-1之间添加一个整数(类或实例变量,取决于您的代码)作为偏移计数器
int offset = 0
每次计时器执行时,将偏移量增加1,并检查偏移量是否超出允许的偏移量。如果是,请将其重置为0
void onTimerExecutes(){
offset++;
if (offset >= colors.length)
offset = 0;
applyColorsToText();
}
然后将偏移量添加到j
:
j = offset;
for(int i = 0, i < letters.length; i++, j++)
j=偏移量;
对于(int i=0,i
您可以在0和colors.length-1之间添加一个整数(类或实例变量,具体取决于您的代码)作为偏移计数器
int offset = 0
每次计时器执行时,将偏移量增加1,并检查偏移量是否超出允许的偏移量。如果是,请将其重置为0
void onTimerExecutes(){
offset++;
if (offset >= colors.length)
offset = 0;
applyColorsToText();
}
然后将偏移量添加到j
:
j = offset;
for(int i = 0, i < letters.length; i++, j++)
j=偏移量;
对于(int i=0,i
或者,如果不将偏移量重置为0,而是使用模运算符对数组进行索引,则可以跳过一些行。看
所以你应该
void onTimerExecutes(){
offset++;
applyColorsToText();
}
在for循环中
coloredText += String.format("<font color='%s'> %s </font>", colors[offset%colors.length], letters[i]);
和使用,因此:
coloredText+=String.format(“%s”,颜色[Math.floorMod(offset,colors.length)],字母[i]);
或者,如果不将偏移量重置为0,而是使用模运算符对数组进行索引,则可以跳过一些行。看
所以你应该
void onTimerExecutes(){
offset++;
applyColorsToText();
}
在for循环中
coloredText += String.format("<font color='%s'> %s </font>", colors[offset%colors.length], letters[i]);
和使用,因此:
coloredText+=String.format(“%s”,颜色[Math.floorMod(offset,colors.length)],字母[i]);
保留字段中第一个字母所用颜色的索引,并在每次为字符串着色时将其递减。如果达到-1,则将其重置为最后一个索引。第一轮是0,所以你以WBR结束。然后你减少它。因为它变成了-1,所以您将它设置为2,最终得到的是RWB。然后将其递减,最后得到BRW。在字段中保留用于第一个字母的颜色索引,并在每次为字符串着色时将其递减。如果达到-1,则将其重置为最后一个索引。第一轮是0,所以你以WBR结束。然后你减少它。因为它变成了-1,所以您将它设置为2,最终得到的是RWB。然后减小它,最后得到BRW。应减小偏移量以按OP所需的方式旋转偏移量应减小以按OP所需的方式旋转