前几天碰到两个关于java问题,研究多时一直无解,忍不住特来资讯论坛的大侠。不是很熟悉语法最好能给出代码,多谢@1,有一个问题是怎样通过从键盘输入一个一组数据末尾以0结束然后求出这组数中大于0的数字的个数和这组数中的和。
   比如:输入1 2 3 -5 4 -6 0然后输出 4和10(按照数组的用法要建立一个数组必须要先规定数组中元素的个数,我就疑惑了。)2, 编写一个method,这个method要包含三个参数:一个数组(包含类型是double的数字)一个int(i),一个 double(x) ,使用void类型。然后要将这个数组中i的位置和i以后的数字全部都向后移动一位,然后把x放入数组中i的位置。例如: 如果数组是:{1.0, 2.0, 3.0},i 是1 ,x是99.0  这个数组将会变成{1.0, 99.0, 2.0}

解决方案 »

  1.   

    1、
    List<Integer> list = new ArrayList<Integer>();
    Scanner sc = new Scanner(System.in);
    boolean flag = true;
    while(flag){
        Integer temp = sc.nextInt();
        if(temp == 0){
    flag = false;
        }
        list.add(temp);
    }
    int gtZero = 0;
    int sum = 0;
    for(Integer i : list){
        if(i > 0){
    gtZero ++;
    sum += i;
        }
    }
    System.out.println("大于零的个数:" + gtZero);
    System.out.println("总和:" + sum);    
      

  2.   

    根本用不到list或数组……
      

  3.   

    2、 public static void change(double args[], int i, double param){
    if(args != null){
        for(int index1=0; index1<args.length; index1++){
    if(index1 == i){
        for(int index2=args.length - 1; index2>=index1; index2--){
    args[index2] = args[index2-1]; 
        }
        args[index1] = param;
    }
        }
        for(double temp : args){
    System.out.println(temp);
        }
    }
        }
      

  4.   

    +1
    看你这输出结果 要求只要一个do while 循环。里面加个if条件语句就可以实现了。
      

  5.   


    import java.util.Scanner;public class Test6 {
    public static void main(String[] args){
    int count = 0;
    int sum = 0;
    Scanner sc = new Scanner(System.in);
    int tmp = sc.nextInt();
    while(tmp != 0){
    if(tmp>0){
    count++;
    sum += tmp;
    }
    tmp = sc.nextInt();
    }
    System.out.println(count+"  "+sum);
    }
    }
      

  6.   


    //[个人意见,供参考]
    class Main
    {
    public static void main(String [] args)
    {
    //编译运行时的格式:javac Main.java
    //                      java Main 1 2 3 -4 -5 6 0

    //1.使用args接收输入数据,
    int count=0;
    int value=0;
    int len=0;
    for(int i=0;i<args.length-1;i++)
    {

    if((len=args[i].toCharArray()[0])>'0')
    {
    count++;
    value=value+(len-48);
    System.out.println((len-48));
    }
    }
    System.out.println("个数为:"+count+",和为:"+value+"\r\n");

    //2.需要新建一数组,且比原数组length大1
    double [] d1 ={1.0,2.0,3.0,4.0,5.0};
    int i=4;
    double d2=8.0;
    method(d1,i,d2);
    }

    public static void method(double[] d1,int i,double d2)
    {
    double [] dou=new double[d1.length+1];
    for(int j=0;j<dou.length;j++)
    {
    if(j<i)
    dou[j]=d1[j];
    else if(j==i)
    dou[j]=d2;
    else
    dou[j]=d1[j-1];
    }
    for(int j=0;j<d1.length;j++)
    {
    System.out.print(d1[j]+" ");
    }
    System.out.println();
    for(int j=0;j<dou.length;j++)
    {
    System.out.print(dou[j]+" ");
    }
    }
    }
      

  7.   

    多谢各位大侠出手相助,太out了 才知道又list这个能够动态编辑的东西
    再次谢过