假设我想在用户的输入中输入“of”字样
我正在创建一个应用程序,而不是在这个哑输出屏幕中完成(这只是一个例子)
abofd
如果用户输入i
,它肯定会识别位于2-4的位置。
但是当i < text.length() - 1
值为4时,它会从4-6检查位置,但是当不存在位置6时,它会给出错误。
我知道你在考虑我在第5行设置computed_signature = OpenSSL::HMAC.hexdigest(OpenSSL::Digest.new('sha256'),
secret,
request.raw_post)
provided_signature = request.headers['Webhook-Signature']
Rack::Utils.secure_compare(provided_signature, computed_signature)
# => false
,但我的原始代码需要运行到最后!
答案 0 :(得分:1)
验证来自用户的输入总是一个好的想法,但是你太过于复杂了!更糟糕的是,你直接写下了错误的代码:
String text = input.nextLine();
int check = 0;
for(int i = 0; i < text.length(); i++;){
if(text.substring(i, i + 2) .equals("of")){
以上无法工作!你看, i 从0迭代到文本LENGTH。但是你使用i + 2从文本中获取子串。 (所以:向你的第一个ArrayIndexOutOfBoundsException打个招呼)。
相反,您可以执行以下操作:
if (text.contains("of")) {
或
if (text.indexOf("of") >= 0) {
查明您的字符串是否包含“of”。
并在标题中回答您的问题:绝对是。编程是指在很大程度上成为一名优秀的工匠。一个优秀的工匠保持他所有的工具和材料按顺序。他不允许乱七八糟,浪费,...
所以,长话短说:从一天一个到永恒:在编写代码时,你会努力实现零容忍政策:没有编译错误,没有警告,您的代码中没有任何内容不属于那里!