解决方案 »
- web开发选择.net还是java呀
- 关于java分页类
- form submit失败。
- SSH架构 getHibernateTemplate()的问题
- html
- 用java代码备份数据库,生成数据文件的问题
- 急!hibernate sequence问题
- webshpere的端口改错,进不了控制台怎么办?应该怎么改?
- 救命啊,项目连不上oracle
- 100分送!那位大哥知VisualAge for Java 4.0(中英版都可以)那里有下,可下马上给分!!!
- hibernate配置mapping的概念问题,求解!
- struts调用静态方法报InvocationTargetException。摊上大事了,各位大神帮忙分析分析
{ public static void main(String[] args)
{ int arr[] = { 1, 1, 1, 0, 0, 1, 1, 0, 0, 1, 1, 1, 0, 1, 0, 1 };
int[] nums = getNewArray(arr); for (int x : nums)
{
System.out.println(x);
}
} public static int[] getNewArray(int[] arr)
{
int[] nums = new int[5];
int sum = 0;
int j = 0;
for (int i = 0; i < arr.length; i++)
{
sum = sum + arr[i]; if (arr[i] == 0 && sum != 0)
{
nums[j] = sum;
j++;
sum = 0;
}
if (i == arr.length - 1 && sum != 0)
{
nums[j] = sum;
}
} return nums;
}}
你看这样行不
public static void main(String[] args) {
int arr[] = { 1, 1, 1, 0, 0, 1, 1, 0, 0, 1,1,1,0,1,0,1 };//
int [] nums = new int [5];
//从arr[0]开始如果值是1则累计和然后赋给nums,如果为0跳过不累计
//
//
//
//nums的结果为{3,2,3,1,1}
/*
*
* 请问应该怎么写呢?
*
*
* */
int j=0;
for(int i=0;i<arr.length;i++){
if(arr[i]==1)
nums[j]++;
if((i==arr.length-1&&arr[i-1]==0)||(arr[i]==1&&arr[i+1]==0))
j++;
}
System.out.println(Arrays.toString(nums));
}
int[] arr = {1,1,1,0,0,1,1,0,0,1,1,1,0,1,0,1};
int[] num = new int[5];
for(int i = 0, count = 0, res = 0; i < arr.length; i++){
if(arr[i] != 0) res += arr[i];
if(arr[i] == 0 || i == arr.length - 1){
if(res == 0) continue;
num[count++] = res;
res = 0;
}
}
}
public class Test1 {
public static void main(String[] args) {
int arr[] = {1, 1, 1, 0, 0, 1, 1, 0, 0, 1,1,1,0,1,0,1};//
int [] nums = new int [5];
//从arr[0]开始如果值是1则累计和然后赋给nums,如果为0跳过不累计
//
//
//
//nums的结果为{3,2,3,1,1}
/*
*
* 请问应该怎么写呢?
*
*
* */
int sum = 0;
int j = 0;
for(int i=0;i<arr.length;i++){
if(arr[i]!=0||sum==0){
sum = sum+arr[i];
continue;
}
else{
nums[j] = sum;
++j;
sum = 0;
}
}
for(int s = 0;s<5;s++){
System.out.println(nums[s]);
}
System.out.println(arr.length);
}
}
public static void main(String[] args) {
int arr[] = { 1, 1, 1, 0, 0, 1, 1, 0, 0, 1, 1, 1, 0, 1, 0, 1 };
int[] nums = new int[5];
int i = 0, j = 0, iSum = 0, iLen = arr.length;
for (i = 0; i < iLen; i++) {
if (arr[i] == 1) {
iSum += arr[i];
} else if ((j < 5) && (iSum != 0)) {
nums[j++] = iSum;
iSum = 0;
} if ((j < 5) && (arr[i] != 0) && (i == iLen - 1))
nums[j++] = iSum;
} iLen = nums.length;
for (i = 0; i < iLen; i++) {
System.out.println(nums[i]);
}
System.out.println(arr.length);
}
}
public static void main(String[] args) {
int arr[] = {1, 1, 1, 0, 0, 1, 1, 0, 0, 1,1,1,0,1,0,1};//
int [] nums = new int [5];
//从arr[0]开始如果值是1则累计和然后赋给nums,如果为0跳过不累计
//
//
//
//nums的结果为{3,2,3,1,1}
/*
*
* 请问应该怎么写呢?
*
*
* */
int sum = 0;
int j = 0;
for(int i=0;i<arr.length;++i){
if(arr[i]!=0||sum==0){
sum = sum+arr[i];
if(i == arr.length-1){//如果是最后一个数值则把sum放到nums数组中
nums[j] = sum;
break;
}
continue; //如果数组的值不是0或者sum的值是0就继续执行循环,不把值放到nums中
}
else{
nums[j] = sum;//把连续的不为0的数字的和放到数组中
++j; //指向数组的下一个位置
sum = 0; //数值放到数组中之后 重新置为0
}
}
//用来测试 输出nums数组中的值
for(int s = 0;s<5;s++){
System.out.println(nums[s]);
}
System.out.println(arr.length);
}
}
已经测试过了 完全符合楼主的需求。