急!请高手解决个问题!

lihaibo2006 2009-07-14 10:37:03
问题是: 为什么我循环少了一次?本来应该11次,但只循环了10次!
程序的意思是:循环了11次,从091开始,如果判断到098在这11次循环里,就跳出,继续往下循环.
代码如下:
String viewsNum ="11";
int invoiceNum = Integer.parseInt("091");
int len="091".length();
int x=1;
for(int s=0;s <len;s++) x*=10;
int invoiceNumX;
String finalInvoiceNum;
String arrValue = null;
arrValue="098,";
boolean flag = false;
for(int i=0; i <Integer.parseInt(viewsNum);){
invoiceNumX = invoiceNum+i;
finalInvoiceNum = (""+(x+invoiceNumX)).substring(1);
if(arrValue !=null && !arrValue.equals(""))
{
i++;
String[] arrValueX = arrValue.split(",");
for(int j=0; j<arrValueX.length;j++)
{
if(String.valueOf(finalInvoiceNum).equals(arrValueX[j]) || String.valueOf(finalInvoiceNum) == arrValueX[j])
{
flag = true;
break;
}
...全文
61 18 打赏 收藏 转发到动态 举报
写回复
用AI写文章
18 条回复
切换为时间正序
请发表友善的回复…
发表回复
bigbug9002 2009-07-15
  • 打赏
  • 举报
回复
public class Test7{
public static void main(String[] args){
String viewsNum ="11";
String userInput="95";
int invoiceNum = Integer.parseInt(userInput);
int len=userInput.length();
boolean hasZero=true;
if(userInput.length()==(""+invoiceNum).length()){
hasZero=false;
}
int x=1;
for(int s=0;s <len;s++) x*=10;
int invoiceNumX;
String finalInvoiceNum;
String arrValue = null;
arrValue="098,099";
boolean flag = false;
int end=Integer.parseInt(viewsNum);
for(int i=0; i <end;i++){
invoiceNumX = invoiceNum+i;
if(hasZero){
finalInvoiceNum = (""+(x+invoiceNumX)).substring(1);
}else{
finalInvoiceNum=""+invoiceNumX;
}
flag=false;
if(arrValue !=null && !arrValue.equals("")){
String[] arrValueX = arrValue.split(",");
for(int j=0; j <arrValueX.length;j++) {
if(String.valueOf(finalInvoiceNum).equals(arrValueX[j]) || String.valueOf(finalInvoiceNum) == arrValueX[j]){
end++;

flag=true;
break;
}
}
if(flag){
continue;
}

}
System.out.println(finalInvoiceNum);
}
}
}

D:\javafile>java Test7
95
96
97
98
99
100
101
102
103
104
105
lihaibo2006 2009-07-14
  • 打赏
  • 举报
回复
楼上的是最终答案!
可以实现!!
感谢!
bigbug9002 2009-07-14
  • 打赏
  • 举报
回复
public class Test7{
public static void main(String[] args){
String viewsNum ="11";
int invoiceNum = Integer.parseInt("091");
int len="091".length();
int x=1;
for(int s=0;s <len;s++) x*=10;
int invoiceNumX;
String finalInvoiceNum;
String arrValue = null;
arrValue="098,099";
boolean flag = false;
int end=Integer.parseInt(viewsNum);
for(int i=0; i <end;i++){
invoiceNumX = invoiceNum+i;
finalInvoiceNum = (""+(x+invoiceNumX)).substring(1);
flag=false;
if(arrValue !=null && !arrValue.equals("")){
String[] arrValueX = arrValue.split(",");
for(int j=0; j <arrValueX.length;j++) {
if(String.valueOf(finalInvoiceNum).equals(arrValueX[j]) || String.valueOf(finalInvoiceNum) == arrValueX[j]){
end++;

flag=true;
break;
}
}
if(flag){
continue;
}

}
System.out.println(finalInvoiceNum);
}
}
}

lihaibo2006 2009-07-14
  • 打赏
  • 举报
回复
bigbug9002 再次感谢你
太谢谢了
结贴 加分
感谢你!!好朋友!
nzz1985 2009-07-14
  • 打赏
  • 举报
回复
bigbug9002 2009-07-14
  • 打赏
  • 举报
回复
11楼的程序中,内层for中,再加一break;
lihaibo2006 2009-07-14
  • 打赏
  • 举报
回复
9楼的,zh2208大侠
你这个不能达到我的要求!如果arrValue="098,099"; 你这个就会有问题!
我的意思说的很明白了! 就是从091开始循环,循环了11次,如果判断098在这11次循环里,就跳出,继续往下走! 但,一定要是循环了11次!
以下是我的全部代码:

String viewsNum ="11";
int invoiceNum = Integer.parseInt("091");
int len="091".length();
int x=1;
for(int s=0;s <len;s++) x*=10;
int invoiceNumX;
String finalInvoiceNum;
String arrValue = null;
arrValue="098,";
boolean flag = false;

for(int i=0; i <Integer.parseInt(viewsNum);){

invoiceNumX = invoiceNum+i;
finalInvoiceNum = (""+(x+invoiceNumX)).substring(1);
if(arrValue !=null && !arrValue.equals("")){

i++;
String[] arrValueX = arrValue.split(",");

for(int j=0; j <arrValueX.length;j++){
if(String.valueOf(finalInvoiceNum).equals(arrValueX[j]) || String.valueOf(finalInvoiceNum) == arrValueX[j])
{
flag = true;
break;
}
if(flag)
{
flag = false;
continue;
}
System.out.println(finalInvoiceNum);
}
}
else{
i++;
System.out.println(finalInvoiceNum);
}
}
bigbug9002 2009-07-14
  • 打赏
  • 举报
回复
public class Test7{
public static void main(String[] args){
String viewsNum ="11";
int invoiceNum = Integer.parseInt("091");
int len="091".length();
int x=1;
for(int s=0;s <len;s++) x*=10;
int invoiceNumX;
String finalInvoiceNum;
String arrValue = null;
arrValue="098,";
boolean flag = false;
int end=Integer.parseInt(viewsNum);
for(int i=0; i <end;i++){
invoiceNumX = invoiceNum+i;
finalInvoiceNum = (""+(x+invoiceNumX)).substring(1);
if(arrValue !=null && !arrValue.equals("")){
String[] arrValueX = arrValue.split(",");
for(int j=0; j <arrValueX.length;j++) {
if(String.valueOf(finalInvoiceNum).equals(arrValueX[j]) || String.valueOf(finalInvoiceNum) == arrValueX[j]){
end++;
i++;
invoiceNumX = invoiceNum+i;
finalInvoiceNum = (""+(x+invoiceNumX)).substring(1);
}
}

}
System.out.println(finalInvoiceNum);
}
}
}


F:\java>java Test7
091
092
093
094
095
096
097
099
100
101
102

F:\java>
yuzhonglian2004 2009-07-14
  • 打赏
  • 举报
回复
顶顶。。
zh2208 2009-07-14
  • 打赏
  • 举报
回复

public class Round {

/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
String viewsNum ="11";
int invoiceNum = Integer.parseInt("091");
int len="091".length();
int x=1;
for(int s=0;s <len;s++) x*=10;
int invoiceNumX;
String finalInvoiceNum;
String arrValue = null;
arrValue="098,";
boolean flag = false;

for(int i=0; i <Integer.parseInt(viewsNum);){

invoiceNumX = invoiceNum+i;
finalInvoiceNum = (""+(x+invoiceNumX)).substring(1);
if(arrValue !=null && !arrValue.equals("")){
i++;
String[] arrValueX = arrValue.split(",");

for(int j=0; j <arrValueX.length;j++){
if(String.valueOf(finalInvoiceNum).equals(arrValueX[j]) || String.valueOf(finalInvoiceNum) == arrValueX[j])
{


flag = true;
break;
}
System.out.println(finalInvoiceNum);
}


}
}
}
}


这样不就没打印098了。。
不知道你到底要的什么结果。。问问题能否把问题和你要的结果说清楚点。。
看了一遍,我也不知道你到底要什么样的结果。。
shadow55 2009-07-14
  • 打赏
  • 举报
回复
怎么会不是11次呢,顺便说一下,lz的编程风格不太好哦!
zh2208 2009-07-14
  • 打赏
  • 举报
回复
是11次啊。。
你写代码的习惯实在太差,没几个会愿意看到这样的代码帮你看问题的。。
怎么样你的括号也得配对啊。。
lihaibo2006 2009-07-14
  • 打赏
  • 举报
回复
楼上的 你不明白我的意思
你这个 098 应该是跳过的 不能让它输出来!!
正确 应该是:
091
092
093
094
095
096
097
099
100
101
102
bigbug9002 2009-07-14
  • 打赏
  • 举报
回复
循环了11次:
public class Test7{
public static void main(String[] args){
String viewsNum ="11";
int invoiceNum = Integer.parseInt("091");
int len="091".length();
int x=1;
for(int s=0;s <len;s++) x*=10;
int invoiceNumX;
String finalInvoiceNum;
String arrValue = null;
arrValue="098,";
boolean flag = false;
for(int i=0; i <Integer.parseInt(viewsNum);){
invoiceNumX = invoiceNum+i;
finalInvoiceNum = (""+(x+invoiceNumX)).substring(1);
if(arrValue !=null && !arrValue.equals("")){
i++;
String[] arrValueX = arrValue.split(",");
for(int j=0; j <arrValueX.length;j++) {
if(String.valueOf(finalInvoiceNum).equals(arrValueX[j]) || String.valueOf(finalInvoiceNum) == arrValueX[j]){
flag = true;
break;
}
}
System.out.println(finalInvoiceNum);
}
}
}
}


结果:
F:\java>java Test7
091
092
093
094
095
096
097
098
099
100
101

F:\java>
lihaibo2006 2009-07-14
  • 打赏
  • 举报
回复
怎么没人啊?
大家都在忙嘛
我急死了!
lihaibo2006 2009-07-14
  • 打赏
  • 举报
回复
少了最后一个
代码 是完整的
请 大家帮我看下!
lovecj6185 2009-07-14
  • 打赏
  • 举报
回复
lz能不能贴个完整的代码上来阿
你这代码里面的括号少很多阿
lihaibo2006 2009-07-14
  • 打赏
  • 举报
回复
急啊
请大家 帮我看下
真是感谢不尽啊!

62,621

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧