请你帮我重新安排我已经在工作的代码,给我下面的要点中描述的输出:
这看起来像这样:
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的理解很差,所以请清楚你的答案,所有的答案将不胜感激,谢谢!
答案 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
}