String newStr;
public RandomCuriosity(String input){
newStr = input;
}
public void shiftChars(){
char[] oldChar = newStr.toCharArray();
char[] newChar = new char[oldChar.length];
newChar[0] = oldChar[oldChar.length-1];
for(int i = 1; i < oldChar.length; i++){
newChar[i] = oldChar[i-1];
}
newStr = String.valueOf(newChar);
}
Run Code Online (Sandbox Code Playgroud)
我创建了一个将字符向前移动一个方法.例如,输入可以是:
输入: Stackoverflow
输出: wStackoverflo
我是怎么做到的,我改变了一个字符串的实例.将该字符串转换为char数组(调用它oldChar),将最后一个索引指定oldChar为第一个索引newChar,并创建一个for循环,将第一个索引oldChar作为新Char数组的第二个索引,依此类推.最后,我将char数组转换回字符串.
我觉得我做得太多,做一些非常简单的事情.有没有更有效的方法来做这样的事情?
编辑感谢您的答案!
我不完全确定这个问题有多受欢迎,或者这个问题是否会得到任何回应,因为这个问题与中国开发者的关系比外面的开发者更多,但是,我目前正在努力为支付宝集成服务器端脚本以接收手机成功请求字符串。
我已经成功地向我的移动人员(通过在可怕的支付宝 API 中眯着眼睛)提供他们向支付宝付款所需的字符串。它遵循以下格式[隐藏可识别信息]:
_input_charset=\"utf-8\"&body=\"Order Number: 20141121_80\"&it_b_pay=\"30m\"¬ify_url=\"http://somePublicFacingIP:8080/index.php?route=payment/alipay/callback\"&out_trade_no=\"80\"&partner=\"2088611100000000\"&payment_type=\"1\"&seller_id=\"account@website.com\"&service=\"mobile.securitypay.pay\"&subject=\"Order Number: 20141121_80\"&total_fee=\"10.01\"
Run Code Online (Sandbox Code Playgroud)
上面的字符串在他们的支付宝支付类中被 Android/iOS API 消费,然后由私钥签名,然后发送到支付宝。支付宝收到他们的请求后,他们会验证我们的参数字符串,并发回 6000 - 9000 的状态码。
到目前为止,我们已经收到resultStatus=9000返回给移动设备的字符串,这表明付款成功(通过检查支付宝的钱包历史,我们确实看到我们已经付款)
result = {
memo = "";
result = "_input_charset=\"utf-8\"&body=\"\U4ea4\U6613\U53f7 20141124_80\"&it_b_pay=\"30m\"¬ify_url=\"http://publicFacingIP:8080/index.php?route=payment/alipay/callback\"&out_trade_no=\"80\"&partner=\"208861100000000\"&payment_type=\"1\"&seller_id=\"account@website.com\"&service=\"mobile.securitypay.pay\"&subject=\"\U65b0\U5143\U7d20\U7f51\U4e0a\U70b9\U9910 - \U8ba2\U5355\U7f16\U53f7 20141124_87\"&total_fee=\"0.01\"&success=\"true\"&sign_type=\"RSA\"&sign=\"reallyLongSignedString\"";
resultStatus = 9000;
}
Run Code Online (Sandbox Code Playgroud)
这是一切停止工作的地方:
支付宝理论上也应该向我们发送一个结果字符串(参数比上面显示的更多)notify_url,我们在我们的输入参数中指定我们的服务器需要验证的是支付宝。此结果字符串还将用于更新我们的后端,以便我们知道订单确实已成功。
出于某种原因,支付宝根本没有将结果字符串发送到我们指定的notify_url.
我试过的:
将var_dump()POST 输入中的一个放入payment/alipay/callback. 没有收到任何请求。
我试过卷曲到我面向公众的 IP URL payment/alipay/callback,我知道它正在工作,因为我正在接收请求,因此排除了我的callbackURL 是否正常工作。
拉我的头发。我再次测试了付款,我可以确认拔头发并没有解决问题。
正如中国开发商常说的,有没有“??” (或大师)那里可以为我提供一些建议和/或解决方案?
我正在尝试仅从命令行创建一个Android应用程序,ant
我已经完成了以下步骤:
android update project --target 1 --path . --library ../../Downloads/android-sdk-linux/extras/android/support/v7/appcompat现在,当我运行该命令时,ant debug我收到以下错误消息:
[dependency] ------------------
[dependency] Ordered libraries:
[dependency]
[dependency] ------------------
[echo] ----------
[echo] Building Libraries with 'debug'...
BUILD FAILED
/home/xxxx/Downloads/android-sdk-linux/tools/ant/build.xml:601: Invalid file: /home/xxxx/Downloads/android-sdk-linux/extras/android/support/v7/appcompat/build.xml
Run Code Online (Sandbox Code Playgroud)
我也测试了这个项目
使用它,我得到了完全相同的错误,实际上该目录中没有文件"build.xml".
我特意寻找命令行答案,目的是了解"神奇".问题来自我,还是我错过了什么?
我正在 Mac OS X 上进行共享内存分配
#define SHARED_OBJECT_PATH "/my_shared_memory"
fd = shm_open(SHARED_OBJECT_PATH, O_CREAT | O_EXCL | O_RDWR, S_IRWXU | S_IRWXG);
if (fd < 0) {
perror("In shm_open()");
exit(1);
}
Run Code Online (Sandbox Code Playgroud)
程序中的一个小片段是上面的。
当我第二次编译并运行程序时,我会得到错误:
In shm_open(): File exists
我假设是因为我需要使用rm [path_to]/my_shared_memory. 我知道在 Linux 上,默认位置是dev/shm,但是,此路径在 Mac OS X 上不存在。
位置在哪里,my_shared_memory我可以删除它吗?
var obj = {};
obj.url = hostNames[i];
obj.statusCode = res.statusCode;
obj.headers = res.headers;
db.collection.save(JSON.stringify(obj, null, 2));
Run Code Online (Sandbox Code Playgroud)
我目前正在尝试通过Node.js请求HTTP响应,然后使用JSON.stringify(将事物转换为JSON文档格式的方法)将该输出解析为MongoDB .出于某种原因,我在MongoDB中获得了一些奇怪的输出,它是这样的:
> db.scrape.find()
{ "_id" : ObjectId("51472849650593014a3c20da"), "0" : "{", "1" : "\n", "2" : " ", "3" : " ", "4" : "\"", "5" : "u", "6" : "r", "7" : "l", "8" :
Run Code Online (Sandbox Code Playgroud)
我认为它正在做的是它将每个char解释为一个新变量.我的代码中出了什么问题?
我用 Java 为我的宾果游戏创建了两种方法。一种方法创建一个新的棋盘,它根据宾果规则 (1-75) 用整数填充宾果棋盘。我的第二种方法生成范围为 1 - 75 的随机数。
public static int drawNum(){
Random rand = new Random();
int num = rand.nextInt(75)+1;
return num;
}
public static void bingoCard(){
int [][]card=new int [5][5];
ArrayList<Integer> alreadyUsed = new ArrayList<Integer>();
boolean valid = false;
int tmp = 0;
for(int i = 0; i <= 4; i++){
for(int row = 0; row < card.length; row++){
while(!valid){
tmp = (int)(Math.random() * 15) + 1 + 15 * i;
if(!alreadyUsed.contains(tmp)){
valid = true;
alreadyUsed.add(tmp);
} …Run Code Online (Sandbox Code Playgroud) 我目前正在使用NodaTime来解析日期和输出日期
public static string nodaTimeTest6(string input)
{
var defaultValue = new OffsetDateTime(new LocalDateTime(2000, 1, 1, 0, 0), Offset.Zero);
var pattern = OffsetDateTimePattern.Create("yyyy-MM-dd'T'HH:mm:sso<m>", CultureInfo.InvariantCulture, defaultValue);
var result = pattern.Parse(input);
return result.Value.Month + "/" + result.Value.Day + "/" + result.Value.Year + " " + result.Value.ClockHourOfHalfDay;
}
Run Code Online (Sandbox Code Playgroud)
例如,输入是这样的: 2014-03-11T02:00:00-07:00
如果我的return声明如下:return result.Value.ToString(),那么输出将如下所示:2014-03-11T02:00:00-07
我理解使用NodaTime属性(这是一个救生员),但是,我对这样的输出感兴趣:
yyyy-MM-dd HH:mm:ss
yyyyMMdd HH:mm:ss
dd/MM/yyyy hh:mm
所以我试着将我的return陈述改为:
return result.Value.Month + "/" + result.Value.Day + "/" + result.Value.Year + " " + result.Value.Hour + ":" …
关于C#/ Java,我注意到的一点似乎是(对我来说)数组大小声明和数组大小的默认第一索引的不一致问题.
使用数组时,假设您要创建一个新的整数数组大小3,它将如下所示:
int[] newArray = new int[3] {1, 2, 3};
完全找到并且可读......对吗?
编程语言的标准似乎要求"第一"指数0.
使用该逻辑,如果我有兴趣创建一个大小的数组3,我应该写这个:
int[] newArray = new int[2] {1, 2, 3};
等一下...... VS正在抛出一个错误,说道an array initialize of length 2 is expected.
因此循环数组和数组大小声明的第一个索引是不一致的?前者使用0基于第一的索引,第二1个使用第a 个索引.
这不是任何形式或方式的游戏破坏/改变,但我真的好奇为什么这里存在差异,或者地狱,如果这甚至是一个问题(就像我说的那样,它不会以任何方式破坏游戏,但我很好奇为什么这样做了).
我现在可以想到为什么1使用基于索引的原因:
在for循环中,您将使用< newArray.Length而不是< newArray.Length - 1或< newArray.Length.
使用Lists一段时间,然后回到size-needs-be-declared-arrays阵列让我有些措手不及.
目前正在做一项将概念应用Comparable到应用中的作业。
我编写了这个允许输入Comparable[]数组的简单方法。此方法返回任何给定数组输入的最小值。使用该.compareTo()方法,我能够真正扩展该方法以允许真正的任何对象类型,无论它是像类一样的自定义实现Point(我们为分配所做的,但此处未显示)。
public static Comparable getMinimum(Comparable[] inputArray)
{
Comparable newObj = inputArray[0];
for(int i = 0; i < inputArray.length; i++)
{
Integer retValue = (inputArray[i]).compareTo(newObj);
if(retValue < 0)
{
newObj = inputArray[i];
}
}
return newObj;
}
Run Code Online (Sandbox Code Playgroud)
我的问题是 - 这是什么Comparable类型?查看 Java API,它并没有真正透露太多信息。为什么我们使用Comparabletype 而不是Objecttype,后者还包括int、double、String等类型?
我有一个方法,从我的表中选择所有行,如下所示:
smtp_status_raw = my_table.select(:message, :is_valid, :hostname).map { |h| h.values }
Run Code Online (Sandbox Code Playgroud)
这将返回一个如下所示的数组:
[{:message=>"blah", :is_valid=>true, :hostname=>"1"}, {:message=>"blah", :is_valid=>true, :hostname=>"2"}, {:message=>"blah", :is_valid=>true, :hostname=>"3}]
Run Code Online (Sandbox Code Playgroud)
使用上面的信息,我想创建一个如下所示的哈希:
{
:node_status =>
{
{:hostname => "1", :message: "blah"},
{:hostname => "2", :message: "blah"},
{:hostname => "3", :message: "blah"}
}
}
Run Code Online (Sandbox Code Playgroud)
首先,我的问题 - 是否有可能像上面那样创建一个哈希?在上面的示例Sequel查询中,我有三个对象,它们是三个独立的主机,我想将这三个主机添加到一个:node_status密钥中.那可能吗?如果那不是有效的哈希,那么另一种选择是什么呢?
其次,这是我尝试过的:
# Initialize the hash
smtp_status_hash = { :node_status: => nil }
Run Code Online (Sandbox Code Playgroud)
我smtp_status_hash用node_status它中的一个键初始化了哈希,但我不确定如何嵌套查询结果.