如何重新安排我的代码以产生我想要的输出?

时间:2014-07-10 18:14:57

标签: java

请你帮我重新安排我已经在工作的代码,给我下面的要点中描述的输出:

  • '输入您的文字'窗口出现
  • 用户输入文字,例如'嘿'
  • 代码打印出用户输入的文本(嘿),代码下方打印出字符数(3),最后打印另一个扫描仪窗口'输入文字'出现。所以程序循环回2并等待输入另一行。

这看起来像这样:

 hey

 3

 another scanner for the text to be typed in

我的代码已经运行并计算了所有内容,我只是想出了如何重新安排它以使其输出完全符合我的要求:

    System.out.println("Type your text...");
    Scanner sc = new Scanner(System.in);


    System.out.println(sc.nextLine());            
    System.out.println(sc.nextLine().length());

    System.out.println("Length of String: " + lengthOfString("hey"));
    sc.close();
}


private static int lengthOfString(String string) {
    int length = -1;
    while (true) {
        try {
            string.charAt(++length);
        } catch (StringIndexOutOfBoundsException exception) {
            break;
        }
    }
    return length;
}

我是初学者,我对java的理解很差,所以请清楚你的答案,所有的答案将不胜感激,谢谢!

5 个答案:

答案 0 :(得分:3)

主要问题是,当您只想呼叫一次时,您正在调用nextLine()两次。而不是这两行:

System.out.println(sc.nextLine());            
System.out.println(sc.nextLine().length());

使用此:

String input = sc.nextLine();
System.out.println(input);
System.out.println(input.length());

另一个问题是你正在关闭sc。这将关闭您不想做的基础流(System.in)。最后,您需要在循环中调用此代码,以便重复该过程。您没有显示此代码的上下文,但我假设它是在循环中调用的方法中,或者是循环体的一部分。在任何一种情况下,最好创建一次Scanner并重复使用它,而不是为用户的每笔交易创建和处置Scanner

答案 1 :(得分:2)

while (true)
{
  System.out.println("Type your text...");
  String str = sc.nextLine();
  System.out.println("Length of String: " + str.length());
}

答案 2 :(得分:1)

试试这个:

import java.util.Scanner;

public class CountingOccurences {

public static void main(String[] args) {

    Scanner inp= new Scanner(System.in);
    String str;
    char ch;
    int count=0;

    System.out.println("Enter the string:");
    str=inp.nextLine();

    while(str.length()>0)
    {
        count++;
        str.substring(count);
    }
    System.out.println("Length :"+count);
}
}

答案 3 :(得分:1)

使用循环,调用nextLine()两次读取两行(并抛出它们)并且不要关闭扫描器。 System.in是全局的,如果您close()您的扫描程序将关闭System.in并且它将不会重新打开。

Scanner sc = new Scanner(System.in);
while(true) {
  System.out.println("Type your text...");
  // System.out.println(sc.nextLine());          // <-- thrown away!        
  // System.out.println(sc.nextLine().length()); // <-- Second next line call
  String line = sc.nextLine();
  System.out.println("Length of String: " + lengthOfString(line)); // <-- not "hey"
  // sc.close();
}

修改

请阅读lengthOfString(String),让我们解决一下 -

private static int lengthOfString(String string) {
  return string.trim().length();
}

答案 4 :(得分:1)

从代码中删除了不必要的复杂性,请尝试以下代码:

    Scanner sc=new Scanner(System.in);       
    String s;
    while(true)  //have created infinite loop as you want to continuously take inputs,
    {
        System.out.println("Enter value:");
        s=sc.next();    
        if(s.equals("quit"))                  //if enterd value is "quit" than it comes out of loop ,termination condition to come out
        {
            break;
        }
        System.out.println(""+s); //to Print string
        System.out.println(""+s.length());  //to print Entered string's length


    }