java-大神帮看下我的代码哪里错了?

问题描述

大神帮看下我的代码哪里错了?

题目是编写程序,读入未指定个数的整数,判断读入的正数和负数分别有多少个,然后计算这些输入值的总和及其平均值(不对0计数)。当输入为0时,表明程序结束。将平均值以浮点数显示。

import java.util.Scanner;
public class TextXXXXX {
public static void main (String[] args){
Scanner input = new Scanner(System.in);
int count1 = 0 , count2 = 0 , sum = 0 , num;
double avg;
System.out.print("请输入一个整数,输入0时结束:");
num = input.nextInt();
while(num != 0){
System.out.print("请输入一个整数,输入0时结束:");
num = input.nextInt();
while(num > 0)
count1+=1;
while(num < 0)
count2+=1;
sum+=num;
}
avg = sum /(count1 + count2);
System.out.println("整数个数为:" + count1 + " 负数个数为:" + count2);
System.out.println("和为:" + sum);
System.out.println("平均值为:"+ avg);
}
}

解决方案

 public static void main(String[] args) {
        int count1 = 0, count2 = 0, sum = 0, num;
        double avg;
        for (int i = 1; i >0; i++) {
            Scanner input = new Scanner(System.in);
            System.out.print("请输入一个整数,输入0时结束:");
            num = input.nextInt();
            if (num > 0)
                count1 += 1;
            if (num < 0)
                count2 += 1;
            if(num==0){
                break;
            }
            sum += num;

        }
        avg = sum*1.0 / (count1 + count2);
        System.out.println("整数个数为:" + count1 + " 负数个数为:" + count2);
        System.out.println("和为:" + sum);
        System.out.println("平均值为:" + avg);

    }

解决方案二:

while(num > 0)
count1+=1;
while(num < 0)
count2+=1;
这个地方有死循环,while改成if

解决方案三:

while(num > 0)
count1+=1;
while(num < 0)
count2+=1;
这个地方错了,应该用if,因为你每次循环到这并没有改变num的值,所以num就始终死循环了,把while改成if

解决方案四:

while里用if,否则容易出死循环的

解决方案五:

1,while换成if,
2,计算平均数的时候,要使用sum*1.0/(count1+coutn2),否则的话丢掉小数部分

解决方案六:

while换成if就好了!

解决方案七:

while死循环了,建议写个判断然后break掉也可以。不然直接用if循环。

解决方案八:

死循环啦换乘ifjiu好啦

时间: 2025-01-08 04:13:55

java-大神帮看下我的代码哪里错了?的相关文章

代码分析-JAVA 求大神帮看下这段代码 怎么修改 救命啊

问题描述 JAVA 求大神帮看下这段代码 怎么修改 救命啊 真心看不懂 public static char[] a(char[] paramArrayOfChar) { char[] arrayOfChar1 = new char[12]; char[] arrayOfChar2 = new char[12]; arrayOfChar2[0] = '?'; arrayOfChar2[1] = '?'; arrayOfChar2[2] = 'o'; arrayOfChar2[3] = '/';

servlet-大神帮看下这段代码我想把文件上传到webroot下的upload文件夹该怎么改啊

问题描述 大神帮看下这段代码我想把文件上传到webroot下的upload文件夹该怎么改啊 package com.chamber.controller.upload; import java.io.File; import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; import java.util.Iterator;

java 调用cmd 执行读取sql文件问题?求大神帮看下

问题描述 java 调用cmd 执行读取sql文件问题?求大神帮看下 Runtime run =Runtime.getRuntime(); Process process = run.exec("cmd /cmysql -u root -pssdlh test <d:/test.sql"); InputStreamReader ir = new InputStreamReader(process .getInputStream()); LineNumberReader input

求java大神帮看解答一下报错,在线等

问题描述 求java大神帮看解答一下报错,在线等 16:29:21,442 ERROR ContextLoader:215 - Context initialization failed org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'userServiceImpl': Injection of resource fields failed; nested except

c-有没有大神帮看下鄙人写的高斯完全主元素消元法代码哪里出了问题,真心感谢啊!

问题描述 有没有大神帮看下鄙人写的高斯完全主元素消元法代码哪里出了问题,真心感谢啊! /*矩阵A用于存放线性方程组的增广矩阵,向量X表示线性方程组的解 #include #include int main() { double m,p,A[10][10],X[10]; int n,i,j,k,q,l,c,w; char a; printf("请输入方程的阶数(小于等于8):n"); scanf("%d",&n); for(i=1;i<=n;i++)//

arraylist-求大神帮看下代码,怎么做才能接收自己输入的字符串进行判断呢?

问题描述 求大神帮看下代码,怎么做才能接收自己输入的字符串进行判断呢? public static void main(String[] args) { Scanner s = new Scanner(System.in); System.out.println("请输入你要查询出现单词或字母次数句子"); ArrayList<Object> arrayList = new ArrayList<Object>(); String f = s.nextLine()

uitableview-求ios大神帮看下这个界面效果怎么实现

问题描述 求ios大神帮看下这个界面效果怎么实现 往上滑动的时候上面图片会跟着往上移动 UISegmentedControl 移动到顶部会锁定 哪位大神帮忙看看 提供下思路 或者有代码 解决方案 用tableview做, UISegmentedControl 放在 section 的 header 中,这样向上滑动到顶部的时候它就会被锁定,demo网上有,去找一个来看看,很容易实现的

函数-jquery问题求解答,想的有点多了头有点晕,求大神帮看下吧

问题描述 jquery问题求解答,想的有点多了头有点晕,求大神帮看下吧 <div class="sch_item basefix"> <span>行程类型</span> <label> <input type="radio" name="type" value = "1" checked="true" id="ai rFrom" &g

java大神帮忙看下代码越界问题

问题描述 java大神帮忙看下代码越界问题 package com.net.ch02; public class Split { public void func(String str,String s){ String Str = s+str+s; String[]array = new String[100]; int[]ray = new int[100]; for(int i = 1 ; i<=Str.length();i++ ){array[i-1] = Str.substring(i