求解🫡输出的时候随机在有些不是0的数据上给输出成0

问题如下:

img


运行结果如下:

img

img


程序不知道哪里出错了,他总是在输出的时候随机在有些不是0的数据上给输出成0,不是固定的某个数据一直错误输出0,是在输出的那一堆里边随机的把几个不是0的数据输成0。
原代码如下:

img

  • 你可以参考下这个问题的回答, 看看是否对你有帮助, 链接: https://ask.csdn.net/questions/7619837
  • 这篇博客你也可以参考下:依次输入不为0的整数,输出最大和最小值,输入0则结束
  • 除此之外, 这篇博客: 读入一行英文,统计每个小写字母的出现次数,并按照由小到大的顺序以条状图的形式输出,次数为0的不输出(附完整代码)中的 整体代码演示: 部分也许能够解决你的问题, 你可以仔细阅读以下内容或跳转源博客中阅读:
  • package cn.tedu.day01;
    
    import java.util.ArrayList;
    import java.util.HashMap;
    import java.util.Map;
    import java.util.Scanner;
    import java.util.Set;
    public class Main {
    	public static void main(String[] args) {
    		Scanner sc1 = new Scanner(System.in);
    		System.out.println("请输入一段英语");
    		String st1 = sc1.nextLine();
    		Map<Character, Integer> m = new HashMap<Character, Integer>();
    		for(int i = 97;i<123;i++) {
    			m.put((char) i, 0);
    		}
    		for(int i =0;i<st1.length();i++) {
    			char ch = st1.charAt(i);
    			int result = m.get(ch);
    			result = result +1;
    			m.put(ch, result);
    		}
    		sort(m);
    	}
    	public static void sort(Map<Character, Integer>m) {
    		ArrayList<Map.Entry<Character, Integer>> a1 = new ArrayList<Map.Entry<Character,Integer>>();
    		Set<Map.Entry<Character, Integer>>ss = m.entrySet();
    		for(Map.Entry<Character, Integer>en:ss) {
    			a1.add(en);
    		}
    		for(int i =0;i<a1.size()-1;i++) {
    			for(int j =0;j<a1.size()-1-i;j++) {
    				if(a1.get(j).getValue()>a1.get(j+1).getValue()) {
    					Map.Entry<Character, Integer>temp = a1.get(j);
    					a1.set(j, a1.get(j+1));
    					a1.set(j+1, temp);
    				}
    			}
    		}
    		for(int i =0;i<a1.size();i++) {
    			if(a1.get(i).getValue()!=0) {
    				for(int j =0;j<a1.get(i).getValue();j++) {
    					System.out.print("*");
    				}
    				System.out.println("\t");
    			}
    		}
    	}
    }
    
  • 您还可以看一下 张旭老师的【拯救者 】数据库系统概论速成课程中的 01·文档下载小节, 巩固相关知识点
package cn.tedu.day01;
 
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Map;
import java.util.Scanner;
import java.util.Set;
public class Main {
    public static void main(String[] args) {
        Scanner sc1 = new Scanner(System.in);
        System.out.println("请输入一段英语");
        String st1 = sc1.nextLine();
        Map<Character, Integer> m = new HashMap<Character, Integer>();
        for(int i = 97;i<123;i++) {
            m.put((char) i, 0);
        }
        for(int i =0;i<st1.length();i++) {
            char ch = st1.charAt(i);
            int result = m.get(ch);
            result = result +1;
            m.put(ch, result);
        }
        sort(m);
    }
    public static void sort(Map<Character, Integer>m) {
        ArrayList<Map.Entry<Character, Integer>> a1 = new ArrayList<Map.Entry<Character,Integer>>();
        Set<Map.Entry<Character, Integer>>ss = m.entrySet();
        for(Map.Entry<Character, Integer>en:ss) {
            a1.add(en);
        }
        for(int i =0;i<a1.size()-1;i++) {
            for(int j =0;j<a1.size()-1-i;j++) {
                if(a1.get(j).getValue()>a1.get(j+1).getValue()) {
                    Map.Entry<Character, Integer>temp = a1.get(j);
                    a1.set(j, a1.get(j+1));
                    a1.set(j+1, temp);
                }
            }
        }
        for(int i =0;i<a1.size();i++) {
            if(a1.get(i).getValue()!=0) {
                for(int j =0;j<a1.get(i).getValue();j++) {
                    System.out.print("*");
                }
                System.out.println("\t");
            }
        }
    }
}