- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
我是 Java 的初学者,这是我在 Stackoverflow 上发表的第一篇文章。尽管我的初始代码与此处的其他帖子类似,但我的问题与实现 StringBuilder 相关,因此是这篇帖子的原因。
我创建了一个方法
**Initial code**
private static String padAgain(String result,int padNum)
{
String str = "";
for(int i = padNum; i >= 0; i--)
{
str = String.format("%" + padNum + "s", result).replace(" ", "*");
}
return str;
}
使用 String.format 方法用空格(或特殊字符)向左填充字符串。我在我的程序中使用相同的方法来右对齐数字。数字以 2(个位数)开头,并以 2 的倍数递增(包含 n 位数),空格与位数的递增成反比。
这里是用于说明目的的输出:
Enter exponent value for base-2 - Enter 0 to exit:
128
Square 1: **************************************2 items
Square 2: **************************************4 items
Square 3: **************************************8 items
Square 4: *************************************16 items
Square 5: *************************************32 items
Square 6: *************************************64 items
Square 7: ************************************128 items
Square 8: ************************************256 items
Square 9: ************************************512 items
Square 10: ***********************************1024 items
Square 11: ***********************************2048 items
Square 12: ***********************************4096 items
Square 13: ***********************************8192 items
Square 14: **********************************16384 items
Square 15: **********************************32768 items
Square 16: **********************************65536 items
Square 17: *********************************131072 items
Square 18: *********************************262144 items
Square 19: *********************************524288 items
Square 20: ********************************1048576 items
Square 21: ********************************2097152 items
Square 22: ********************************4194304 items
Square 23: ********************************8388608 items
Square 24: *******************************16777216 items
Square 25: *******************************33554432 items
Square 26: *******************************67108864 items
Square 27: ******************************134217728 items
Square 28: ******************************268435456 items
Square 29: ******************************536870912 items
Square 30: *****************************1073741824 items
Square 31: *****************************2147483648 items
Square 32: *****************************4294967296 items
Square 33: *****************************8589934592 items
Square 34: ****************************17179869184 items
Square 35: ****************************34359738368 items
Square 36: ****************************68719476736 items
Square 37: ***************************137438953472 items
Square 38: ***************************274877906944 items
Square 39: ***************************549755813888 items
Square 40: **************************1099511627776 items
Square 41: **************************2199023255552 items
Square 42: **************************4398046511104 items
Square 43: **************************8796093022208 items
Square 44: *************************17592186044416 items
Square 45: *************************35184372088832 items
Square 46: *************************70368744177664 items
Square 47: ************************140737488355328 items
Square 48: ************************281474976710656 items
Square 49: ************************562949953421312 items
Square 50: ***********************1125899906842624 items
Square 51: ***********************2251799813685248 items
Square 52: ***********************4503599627370496 items
Square 53: ***********************9007199254740992 items
Square 54: **********************18014398509481984 items
Square 55: **********************36028797018963968 items
Square 56: **********************72057594037927936 items
Square 57: *********************144115188075855872 items
Square 58: *********************288230376151711744 items
Square 59: *********************576460752303423488 items
Square 60: ********************1152921504606846976 items
Square 61: ********************2305843009213693952 items
Square 62: ********************4611686018427387904 items
Square 63: ********************9223372036854775808 items
Square 64: *******************18446744073709551616 items
Square 65: *******************36893488147419103232 items
Square 66: *******************73786976294838206464 items
Square 67: ******************147573952589676412928 items
Square 68: ******************295147905179352825856 items
Square 69: ******************590295810358705651712 items
Square 70: *****************1180591620717411303424 items
Square 71: *****************2361183241434822606848 items
Square 72: *****************4722366482869645213696 items
Square 73: *****************9444732965739290427392 items
Square 74: ****************18889465931478580854784 items
Square 75: ****************37778931862957161709568 items
Square 76: ****************75557863725914323419136 items
Square 77: ***************151115727451828646838272 items
Square 78: ***************302231454903657293676544 items
Square 79: ***************604462909807314587353088 items
Square 80: **************1208925819614629174706176 items
Square 81: **************2417851639229258349412352 items
Square 82: **************4835703278458516698824704 items
Square 83: **************9671406556917033397649408 items
Square 84: *************19342813113834066795298816 items
Square 85: *************38685626227668133590597632 items
Square 86: *************77371252455336267181195264 items
Square 87: ************154742504910672534362390528 items
Square 88: ************309485009821345068724781056 items
Square 89: ************618970019642690137449562112 items
Square 90: ***********1237940039285380274899124224 items
Square 91: ***********2475880078570760549798248448 items
Square 92: ***********4951760157141521099596496896 items
Square 93: ***********9903520314283042199192993792 items
Square 94: **********19807040628566084398385987584 items
Square 95: **********39614081257132168796771975168 items
Square 96: **********79228162514264337593543950336 items
Square 97: *********158456325028528675187087900672 items
Square 98: *********316912650057057350374175801344 items
Square 99: *********633825300114114700748351602688 items
Square 100: ********1267650600228229401496703205376 items
Square 101: ********2535301200456458802993406410752 items
Square 102: ********5070602400912917605986812821504 items
Square 103: *******10141204801825835211973625643008 items
Square 104: *******20282409603651670423947251286016 items
Square 105: *******40564819207303340847894502572032 items
Square 106: *******81129638414606681695789005144064 items
Square 107: ******162259276829213363391578010288128 items
Square 108: ******324518553658426726783156020576256 items
Square 109: ******649037107316853453566312041152512 items
Square 110: *****1298074214633706907132624082305024 items
Square 111: *****2596148429267413814265248164610048 items
Square 112: *****5192296858534827628530496329220096 items
Square 113: ****10384593717069655257060992658440192 items
Square 114: ****20769187434139310514121985316880384 items
Square 115: ****41538374868278621028243970633760768 items
Square 116: ****83076749736557242056487941267521536 items
Square 117: ***166153499473114484112975882535043072 items
Square 118: ***332306998946228968225951765070086144 items
Square 119: ***664613997892457936451903530140172288 items
Square 120: **1329227995784915872903807060280344576 items
Square 121: **2658455991569831745807614120560689152 items
Square 122: **5316911983139663491615228241121378304 items
Square 123: *10633823966279326983230456482242756608 items
Square 124: *21267647932558653966460912964485513216 items
Square 125: *42535295865117307932921825928971026432 items
Square 126: *85070591730234615865843651857942052864 items
Square 127: 170141183460469231731687303715884105728 items
Square 128: 340282366920938463463374607431768211456 items
Enter exponent value for base-2 - Enter 0 to exit:
0
当迭代次数呈指数增长时,比如从 2^10 到 2^128,String.format() 似乎有点慢。 因此,我用 StringBuilder 替换了 String.format 并且只取得了部分成功。
[sidebar]为简洁起见,我没有发布其余的程序代码,而且我的重点是显示的 padAgain(String,int) 方法。如果需要,将发布整个代码。[/sidebar]
**Initial code modified**
private static String padAgain(String result,int padNum)
{
StringBuilder sb = new StringBuilder(result);
for(int i = 1; i < padNum; i++)
{
sb.insert(0, result).insert(sb.indexOf(result), " ").setLength(padNum - result.toCharArray().length);
}
sb.append(result);
return sb.toString();
}
及其输出
Enter exponent value for base-2 - Enter 0 to exit:
16
Square 1: 2 22 items
Square 2: 4 44 items
Square 3: 8 88 items
Square 4: 1616 items
Square 5: 3232 items
Square 6: 6464 items
Square 7: 1128 items
Square 8: 2256 items
Square 9: 5512 items
Square 10: 1024 items
Square 11: 2048 items
Square 12: 4096 items
Square 13: 8192 items
Square 14: 16384 items
Square 15: 32768 items
Square 16: 65536 items
Enter exponent value for base-2 - Enter 0 to exit:
0
代码解释(我正在尝试做什么):
非常感谢论坛专家/成员可以帮助扩展/进一步修改/更正我的 StringBuilder 代码。
最佳答案
您还可以使用 Arrays
的 fill()
方法来做一些非常简单的事情。
StringBuilder sb = new StringBuilder();
char[] pad = new char[padnum - result.length()];
Arrays.fill(pad, '*');
return sb.append(pad).append(result).toString();
我们用的时间真的很短,但这种方法比 for 循环 快大约 25%。
关于java - 使用 StringBuilder 为 String 填充空格或其他字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11880644/
关闭。这个问题不符合Stack Overflow guidelines .它目前不接受答案。 要求提供代码的问题必须表现出对所解决问题的最低限度理解。包括尝试过的解决方案、为什么它们不起作用,以及预
为什么在 C# 中添加两个 char 结果是 int 类型? 例如,当我这样做时: var pr = 'R' + 'G' + 'B' + 'Y' + 'P'; pr 变量变为 int 类型。我希望它是
下面的代码可以编译,但 char 类型的行为与 int 类型的行为不同。 特别是 cout ::ikIsX >() ::ikIsX >() ::ikIsX >() using names
我正在寻找一个正则表达式,它可以匹配长度为 1 个或多个字符但不匹配 500 的内容。这将在 Rails 路由文件中使用,特别是用于处理异常。 路线.rb match '/500', to: 'err
对于 C 编程作业,我正在尝试编写几个头文件来检查所谓的“X 编程语言”的语法。我最近才开始,正在编写第一个头文件。这是我编写的代码: #ifndef _DeclarationsChecker_h_
为什么扩展的 ascii 字符(â、é 等)被替换为 字符? 我附上了一张图片...但我正在使用 PHP 从 MySQL 中提取数据,其中一些位置有扩展字符...我使用的是 Arial 字体。 您可以
我有一个与 R 中的断线相关的简单问题。 我正在尝试粘贴,但在获取(字符/数字)之间的断线时遇到问题。请注意,这些值包含在向量中(V1=81,V2=55,V3=25)我已经尝试过这段代码: cat(p
如何将 ANSI 字符 (char) 转换为 Unicode 字符 (wchar_t),反之亦然? 是否有用于此目的的任何跨平台源代码? 最佳答案 是的,在 中你有mbstowcs()和 wcsto
函数 fromCharCode 不适用于国际 ANSI 字符。例如,对于 ID 为 192 到 223 的俄语 ANSI (cp-1251) 字符,它返回特殊字符。如何解决这个问题? 我认为,需要将A
如果不喜欢,我想隐藏 id,但不起作用 SELECT * FROM character, character_actor WHERE character.id NOT LIKE character_a
现在这个程序成功地反转了键盘输入的单词。但是我想在我反转它之前“保存”指针中的单词,所以我可以比较两者,反转的和“原始的”,并检查它们是否是回文。我还没有太多经验,可能会出现比我知道的更多的错误,但我
Memcpy 和 memcmp 函数可以接受指针变量吗? char *p; char* q; memcpy(p,q,10); //will this work? memcmp(p,q,10); //w
恐怕我对一个相当过饱和的主题的细节有疑问,我搜索了很多,但找不到一个明确的答案来解决这个特定的明显-imho-重要的问题: 使用UTF-8将byte[]转换为String时,每个字节(8bit)都变成
我有一个奇怪的问题。我需要从 stat 命令打印输出字符串。 我已经编写了获取一些信息的代码。 import glob import os for file in glob.glob('system1
我正在使用 Java 并具有其值如下所示的字符串, String data = "vale-cx"; data = data.replaceAll("\\-", "\\-\\"); 我正在替换其中的“
String urlParameters = "login=test&password=te&ff"; 我有一个String urlParams,& - 是密码的一部分,如何使其转义,从而不被识别为分
大家好,我只想从此字符串中提取第一个字母: String str = "使 徒 行 傳 16:31 ERV-ZH"; 我只想获取这些字符: 使 徒 行 傳 并且不包括 ERV-ZH 仅数
这个问题已经有答案了: Crash or "segmentation fault" when data is copied/scanned/read to an uninitialized point
所以, 我有一个字符**;它本质上是一个句子,带有指向该句子中每个单词的指针;即 'h''i''\0''w''o''r''l''d''\0''y''a''y''!''\0' 在这种情况下,我希望使用可
这个问题在这里已经有了答案: Using quotation marks inside quotation marks (12 个答案) 关闭 7 年前。 如何打印 " 字符? 我知道打印 % 符号
我是一名优秀的程序员,十分优秀!