当前位置: 首页 > 知识库问答 >
问题:

for循环只读取最后一个值

吴安和
2023-03-14

我的程序中有一个错误,使我的循环只读取输入字符串的最后一部分。我想让程序计算一个字符串中每个字符的个数。我不想要答案告诉我如何更有效地存储这些值,而不重复所有内容26次。请回答我在这里提出的问题。抱歉,如果这是一个副本!我只是不知道该说明什么,因为没有明显的错误。

import java.util.Scanner;

public class stringprogram {
    public static void stringinputmethod()
    {
        Scanner scan = new Scanner(System.in);
        System.out.println("Enter a String");
        String strs = scan.nextLine();

        int numa = 0;
        int numb = 0;
        int numc = 0;
        int numd = 0;
        int nume = 0;
        int numf = 0;
        int numg = 0;
        int numh = 0;
        int numi = 0;
        int numj = 0;
        int numk = 0;
        int numl = 0;
        int numm = 0;
        int numn = 0;
        int numo = 0;
        int nump = 0;
        int numq = 0;
        int numr = 0;
        int nums = 0;
        int numt = 0;
        int numu = 0;
        int numv = 0;
        int numw = 0;
        int numx = 0;
        int numy = 0;
        int numz = 0;

        String randaf;

        for(int i=0; i<=strs.length();i++)
        {
            randaf = strs.substring(i);

            if(randaf.equals("a"))
            {
                numa = numa + 1;
            }
            else if(randaf.equals("b"))
            {
                numb = numb + 1;
            }
            else if(randaf.equals("c"))
            {
                numc = numc + 1;
            }
            else if(randaf.equals("d"))
            {
                numd = numd + 1;
            }
            else if(randaf.equals("e"))
            {
                nume = nume + 1;
            }
            else if(randaf.equals("f"))
            {
                numf = numf + 1;
            }
            else if(randaf.equals("g"))
            {
                numg = numg + 1;
            }
            else if(randaf.equals("h"))
            {
                numh = numh + 1;
            }
            else if(randaf.equals("i"))
            {
                numi = numi + 1;
            }
            else if(randaf.equals("j"))
            {
                numj = numj + 1;
            }
            else if(randaf.equals("k"))
            {
                numk = numk + 1;
            }
            else if(randaf.equals("l"))
            {
                numl = numl + 1;
            }
            else if(randaf.equals("m"))
            {
                numm = numm + 1;
            }
            else if(randaf.equals("n"))
            {
                numn = numn + 1;
            }
            else if(randaf.equals("o"))
            {
                numo = numo + 1;
            }
            else if(randaf.equals("p"))
            {
                nump = nump + 1;
            }
            else if(randaf.equals("q"))
            {
                numq = numq + 1;
            }
            else if(randaf.equals("r"))
            {
                numr = numr + 1;
            }
            else if(randaf.equals("s"))
            {
                nums = nums + 1;
            }
            else if(randaf.equals("t"))
            {
                numt = numt + 1;
            }
            else if(randaf.equals("u"))
            {
                numu = numu + 1;
            }
            else if(randaf.equals("v"))
            {
                numv = numv + 1;
            }
            else if(randaf.equals("w"))
            {
                numw = numw + 1;
            }
            else if(randaf.equals("x"))
            {
                numx = numx + 1;
            }
            else if(randaf.equals("y"))
            {
                numy = numy + 1;
            }
            else if(randaf.equals("z"))
            {
                numz = numz + 1;
            }
        }
        System.out.println("a: "+numa +"\nb: "+ numb +"\nc: "+ numc +"\nd: "+ numd +"\ne: "+ nume +"\nf: "+ numf +"\ng: "+ numg +"\nh: "+ numh +"\ni: "+ numi +"\nj: "+ numj +"\nk: "+ numk +"\nl: "+ numl +"\nm: "+ numm +"\nn: "+ numn +"\no: "+ numo +"\np: "+ nump +"\nq: "+ numq +"\nr: "+ numr +"\ns: "+ nums +"\nt: "+ numt +"\nu: "+ numu +"\nv: "+ numv +"\nw: "+ numw +"\nx: "+ numx +"\ny: "+ numy +"\nz: "+ numz);
    }

    public static void main(String[] args)
    {
        stringinputmethod();
    }
}

共有1个答案

蔺昊穹
2023-03-14

substring方法将返回从指定索引到字符串末尾的新字符串。您需要的是string.charat(index),它将返回指定位置的字符

 类似资料:
  • 我试图使用for或增强的for循环遍历对象数组,但出于某种原因,它只使用数组中的最后一个对象。 例如,在这里我创建了一个具有高度和宽度变量的类。 在我下面主要方法的循环中,我尝试对所有“高度”输入求和。 当我运行这段代码时,输出是15。这意味着它只循环了totaltest[4],连续5次。 我想找到的答案是22。 我尝试过用所有不同的方法声明和初始化数组,但是答案没有改变。此外,错误不仅仅是在试图

  • 目前控制台打印循环中的所有值,但只需要打印最后一个

  • 问题内容: 我对Java相当陌生,但是我的for循环立即跳到以下代码中的最高可能值: 第一个for循环正在搞砸,而嵌套的则运行良好。变量i初始化为0,难度为16。此摘录的输出如下: 如果有人可以帮助我,将不胜感激。由于我是新手,因此我可能忽略了一些小而基本的东西。 问题答案: 问题是第二行末尾的分号。没有主体的循环是有效的。在方括号内具有独立的代码块也是有效的(这定义了变量的作用域- 如果在方括号

  • 问题内容: 我有一个循环,将一个列表的值设置为另一个列表的值,虽然我可以用当前代码实现此目的,但它只是将最后一组值附加到列表中。在我的设置中可能会导致该问题的原因是什么? 这是我的数据格式: 这是我的格式: 这是我的for循环功能: 这是控制台: 它错过了前两个循环的值,但是完美地捕获了数组中的第三个循环。 问题答案: 应该在语句之后循环外,否则您将覆盖每次迭代中添加到列表的值。

  • 如果格式不正确,请原谅,这是我的第一篇帖子。我想看看是否以前发现过这个问题,但我找不到任何人有与我相同的问题。 我试图学习Java,但我无法弄清楚为什么我的for循环没有输出最后一次迭代。我正在完成codeabbey的练习,并相对轻松地完成了前两个。然而,在第三个和第四个问题上,我无法在最后一次迭代中输出我的for循环。 我开始在谷歌上搜索,并想将我的答案与其他人的答案进行比较。当我的代码与我找到

  • 我正在尝试向我的手风琴添加一个交互式id,但我的代码中出现了一些问题,手风琴打开了每个手风琴项目,我只想在单击它时能够一次打开一个手风琴项目。