我的要求是生成以下字符串:
qid<> 0 And qid<> 1 And qid<> 2 And qid<> 3 And qid<> 4 And qid<> 5 And qid<> 6 And qid<> 7 And qid<> 8 And qid<> 9
所以我喜欢这样:
import java.util.*;
import java.lang.*;
import java.io.*;
/* Name of the class has to be "Main" only if the class is public. */
class Ideone
{
public static void main (String[] args) throws java.lang.Exception
{
// your code goes here
String deleteQids="qid<> ";
String deleteqidString1="";
for(int i=0;i<10;i++) {
deleteqidString1+=deleteQids+i +" And ";
}
System.out.println(deleteqidString1);
}
}
但最后并且出现。
有人可以告诉我如何摆脱这个吗?
答案 0 :(得分:2)
您可以明确处理第一次出现:
String deleteqidString1 = deleteQids+i;
for(int i=1; i < 10; i++) {
deleteqidString1 += " And " + deleteQids + i;
}
编辑:
如评论中所述,StringBuilder
是动态构建工具的正确工具。
(但这并没有影响解决方案的逻辑):
StringBuilder deleteqidString1 = new StringBuilder(deleteQids).append(i);
for(int i=1; i < 10; i++) {
deleteqidString1.append(" And ").append(deleteQids).append(i);
}
答案 1 :(得分:2)
您只需使用String#substring
从" And "
中删除最后一个String
,但更有效的方法是使用StringBuilder
和“前缀”{{1当索引大于" And "
时,例如
0
最终打印出类似......
String deleteQids = "qid<> ";
StringBuilder sb = new StringBuilder(128);
for (int i = 0; i < 10; i++) {
if (i > 0) {
sb.append(" And ");
}
sb.append(deleteQids).append(i);
}
System.out.println(sb.toString());
答案 2 :(得分:1)
如果你的迭代被修复到10,那么
尝试这个可能有助于这不是最佳方式,但仍然可以得到你想要的东西
如果迭代固定为10
import java.util.*;
import java.lang.*;
import java.io.*;
/* Name of the class has to be "Main" only if the class is public. */
class Ideone
{
public static void main (String[] args) throws java.lang.Exception
{
// your code goes here
String deleteQids="qid<> ";String deleteqidString1="";
for(int i=0;i<10;i++)
{
if(i==9)
{
deleteqidString1+=deleteQids+i ;
}
else
{
deleteqidString1+=deleteQids+i +" And ";
}
}
System.out.println(deleteqidString1);
}
}
答案 3 :(得分:1)
如果你对字符串操作很多,总是使用StringBuilder,因为它更有效。
int qids = -1;
StringBuilder sb = new StringBuilder();
if(qids>=0) {
for(int i=0;i<qids-1;i++)
{
sb.append("qid<> ");
sb.append(i);
sb.append(" And ");
}
sb.append("qid<> ");
sb.append(qids);
}
System.out.println(sb.toString());
答案 4 :(得分:1)
下面给出的代码片段完成了这项工作。它为每个迭代添加'And',除了最后一个,即。当我等于9时。
String deleteQids="qid<> ";
String deleteqidString1="";
for(int i=0;i<10;i++)
{
deleteqidString1 += deleteQids + i ;
if (i < 9) deleteqidString1 += " And ";
}
答案 5 :(得分:0)
最好使用 StringBuilder 。然后,你必须找到一个系统来知道你的&#34;和&#34;。
以下是一些提示:
结合这些条件,您可以构建String。
答案 6 :(得分:0)
如果您在循环的最后一次迭代中,或者在完成循环后修改String以将其删除,则更改逻辑以不附加“And”。
这些基本上是你的2个选项,你选择的选项取决于个人喜好和确切的应用逻辑。
在这个简单的例子中,我选择了第一个,在一个更现实的场景中,使用StringBuilder构造String,并在某些Collection上使用Iterator,第二个选项通常更容易实现,当然更容易阅读。
deletequidString1 += deleteQuids+1;
if (i < 10) deleteQuidString1 += " And ";
这是你最好的选择。
答案 7 :(得分:0)
使用此代码
String deleteQids="qid<> ";
String deleteqidString1="";
for(int i=0;i<10;i++) {
if(i!=9)
{
deleteqidString1+=deleteQids+i +" And ";
}
else
{
deleteqidString1+=deleteQids+i +"";
}
}
System.out.println(deleteqidString1);
}