Java错误';s charAt()
我正在尝试创建一个程序,用户在其中输入一个字符串,程序将其回送到监视器,每行一个字符 然而,我不能编译我写的东西。此行将弹出一个错误:Java错误';s charAt(),java,char,Java,Char,我正在尝试创建一个程序,用户在其中输入一个字符串,程序将其回送到监视器,每行一个字符 然而,我不能编译我写的东西。此行将弹出一个错误: char c = word.charAt(i); 这是我的密码: import java.util.Scanner; public class charAt { public static void main(String[] args) { System.out.println("Give me a word, just one word:"
char c = word.charAt(i);
这是我的密码:
import java.util.Scanner;
public class charAt
{
public static void main(String[] args)
{
System.out.println("Give me a word, just one word:");
Scanner kb = new Scanner(System.in);
String word = kb.nextLine();
for(int i=0; i<word.length(); i++)
char c = word.charAt(i);
System.out.println(" " + c);
}
}
import java.util.Scanner;
公共类字符
{
公共静态void main(字符串[]args)
{
System.out.println(“给我一个词,就一个词:”);
扫描仪kb=新扫描仪(System.in);
String word=kb.nextLine();
对于(int i=0;i,循环的缩进更合适,如下所示:
for(int i=0; i<word.length(); i++)
char c = word.charAt(i); // <-- Also, not a valid location to declare the char
// as noted by cupawntae
System.out.println(" " + c);
或者你可以用
for(int i=0; i<word.length(); i++)
System.out.println(" " + word.charAt(i));
公共类字符
{
公共静态void main(字符串[]args)
{
System.out.println(“给我一个词,就一个词:”);
扫描仪kb=新扫描仪(System.in);
String word=kb.nextLine();
char[]charArray=word.toCharArray();
对于(int i=0;i
免责声明:尚未实际测试此功能仅将System.out.println(c)
放在for循环的范围内
import java.util.Scanner;
public class charAt
{
public static void main(String[] args)
{
System.out.println("Give me a word, just one word:");
Scanner kb = new Scanner(System.in);
String word = kb.nextLine();
for(int i=0; i<word.length(); i++)
{
char c = word.charAt(i);
System.out.println(" " + c);
}
}
}
import java.util.Scanner;
公共类字符
{
公共静态void main(字符串[]args)
{
System.out.println(“给我一个词,就一个词:”);
扫描仪kb=新扫描仪(System.in);
String word=kb.nextLine();
对于(int i=0;i,如果没有括号,Java将假定您的意思是:
for(int i = 0; i < word.length(); i++)
{
char c = word.charAt(i);
}
System.out.println(" " + c);
一般来说,我强烈建议始终使用括号,因为没有括号很容易犯类似这样的简单错误。您刚刚错过了括号!您的字符c超出了范围。以下操作将有效
for(int i=0; i<word.length(); i++) {
char c = word.charAt(i);
System.out.println(" " + c);
}
for(int i=0;i正如其他答案所指出的,您的循环将无法正常工作,因为println
将无法看到char c
变量
然而,这并不是您看到的错误的原因。事实上,您的编译器甚至可能不会抱怨这一行,因为它没有足够的范围来确定您有范围问题
为了演示,如果删除System.out.println
,它仍然不会编译。原因是这样声明变量是无效的:
for (;;) char c='a';
您将得到一个错误,指出char c='a';
不是语句
您可以使用for
(以及其他循环、条件等)与
像System.out.println(…);
或
用大括号括起来的块{…}
变量声明不是简单的语句,因此如果要声明变量,必须用大括号将其括在块中{…}
一旦您这样做,很明显,println
需要在这个块中。因此,您将以与其他答案相同的代码结束,底线是您的问题缺少大括号。正如其他人所指出的,问题本身就是这个部分:
for(int i=0; i<word.length(); i++)
char c = word.charAt(i);
当然,下一步是将System.out.println
语句移到这个块中,因为局部变量只在声明它们的块中可见。你的for
循环缺少括号。这可能是问题的一部分。你会遇到什么错误?这就是为什么有些语言需要括号s之后if/while/for…几乎正确-见我的答案-即使删除println
@CupawnTae,也不会编译鉴于上下文,我认为OP无意删除println
语句。尽管这一点很好。正如OP在问题中所说,错误出现在char c
行,而不是println
,所以可能我是学究,但他看到的实际错误不是由范围外变量引起的,而是由无效循环引起的。此外,您的初始语句是错误的-编译器没有将其视为块version@CupawnTae你能详细解释一下最后的评论吗?几乎是对的——看我的答案——即使您删除了println
@CupawnTae,我的代码将被编译。您也正确地认识到,如果没有新的块,它不是一个有效的语句位置。我的意思是,没有println,原始代码将无法编译,因此println不是问题。当然,如果有一个有效的块,它不在其中,这将是一个问题,但它不在其中'不会成为问题,因为任何地方都没有有效的变量声明使其不在的范围内:)虽然这是真的,但它不会编译,即使它会编译,它也不会做任何工作。因此,很明显,它不应该是一个裸变量声明。但是,尽管如此,+1表示在技术上对有效语句是正确的。@ElliottFrisch同意。主要的是,没有人解决OP报告的实际错误,这与println
for(int i = 0; i < word.length(); i++)
{
char c = word.charAt(i);
System.out.println(" " + c);
}
for(int i=0; i<word.length(); i++) {
char c = word.charAt(i);
System.out.println(" " + c);
}
for(int i=0; i<word.length(); i++)
System.out.println(" " + word.charAt(i));
for (;;) char c='a';
for(int i=0; i<word.length(); i++)
char c = word.charAt(i);
for (int i = 0; i < word.length(); i++) {
char c = word.charAt(i);
}