我正在尝试创建一个程序,让用户输入未知的名称值,然后输出输入的最长名称。到目前为止这是我的代码。当我编译我有几个错误,他们都是相同的“找不到符号”。我是否需要初始化这些变量呢?
import java.util.Scanner;
public class Name
{
public static void main(String[] args)
{
Scanner kb = new Scanner(System.in);
longestName(kb);
}
public static void longestName(Scanner sc)
{
String name=kb.nextLine();
biggestName=name;
System.out.println("Type -1 if you want to quit");
int number=kb.nextInt();
While (number !=-1);
{
String name1=kb.nextLine();
if (name1.length() > biggestName)
{
biggestName=name1;
}
System.out.println("Do you want to continue? Type -1 to quit.");
int number1=kb.nextInt();
}
System.out.println("Longest name is "+biggestName);
}
}
感谢帮助人员修复错误,以及其他一些更改和程序提供了正确的输出。
import java.util.Scanner;
public class Name
{
public static void main(String[] args)
{
Scanner kb = new Scanner(System.in);
longestName(kb);
}
public static void longestName(Scanner kb)
{
String biggestName;
System.out.println("Enter the first name");
String name=kb.nextLine();
biggestName=name;
System.out.println("Type -1 if you want to quit");
int number=kb.nextInt();
while (number !=-1)
{
System.out.println("Enter another name");
Scanner kb1 = new Scanner(System.in);
String name1=kb1.nextLine();
int length1=biggestName.length();
int length2=name1.length();
if (length2 > length1)
{
biggestName=name1;
}
System.out.println("Do you want to continue? Type -1 to quit.");
number=kb.nextInt();
}
System.out.println("Longest name is "+biggestName);
}
}
答案 0 :(得分:1)
您已将Scanner
传递给longestName
,但在longestName
中,您将参数命名为sc
。在sc
中使用kb
代替longestName
。
使用小写while
代替While
;删除while
后面的分号;分号表示 是正文,而不是其下面的{
}
块。
我假设在while循环的底部,您要将下一个整数分配给number
,而不是立即超出范围的新变量number1
。
您没有声明biggestName
是什么(或name
)。
答案 1 :(得分:1)
您的代码中存在相当多的错误。在没有详细解释每个错误的情况下,以下是一个有效的修改版本示例:
import java.util.Scanner;
public class Name
{
public static void main(String[] args)
{
Scanner kb = new Scanner(System.in);
longestName(kb);
}
public static void longestName(Scanner sc)
{
System.out.println("Enter name, or type '-1' if you want to quit");
String name=sc.nextLine();
String biggestName="";
while (!name.equals("-1"))
{
if (name.length() > biggestName.length())
{
biggestName=name;
}
name=sc.nextLine();
}
System.out.println("Longest name is "+biggestName);
}
}
答案 2 :(得分:0)
这里有两个错误:
While (number !=-1);
While
应为while
,而;
会产生无限循环。
另一个问题是你不要在循环中改变number
。
答案 3 :(得分:0)
1-
public static void longestName(Scanner sc)
将扫描仪的名称更改为kb
,或将方法中的每个kb
更改为sc
。
2-见Scanner issue when using nextLine after nextXXX
3-使用while
代替While
,然后移除;
。
答案 4 :(得分:0)
我可以在代码中看到以下问题:
longestName()
方法应该使用引用名称sc
而不是kb
(因为kb
仅在main
方法中具有范围)biggestName
。它应该被声明为类变量或longestName()
方法中的变量,并且应该是String
类型While
,while
是'w',小案例kb.nextInt()
应该分配给变量number
而不是number1
,因为永远不会读取/使用变量number1
。>
运算符不能应用于String类型。在if (name1.length() > biggestName)
行中,我们将int
与String
进行比较,结果会导致编译错误。该行应修改为if (name1.length() > biggestName.length())
nextInt()
将导致InputMismatchException
被抛出。 现在我觉得我应该写一些像Joe Elleson那样的更正代码。但希望这个答案有所帮助。