【问题标题】:Java Error- cannot find symbol- Variable isJava 错误 - 找不到符号 - 变量是
【发布时间】:2025-12-21 06:55:16
【问题描述】:

我试图为 print、println 和扫描仪创建一个“快捷方式”。所以我创建了一个不同的类,这就是它的内容:

import java.util.*;
public class ShortCutClass {
    Scanner input = new Scanner(System.in);
    public void p (String text){
        System.out.print (text);
    }
    public void pl (String text){
        System.out.println (text);
    }
    public String is (){
        String a= input.nextLine();
        return a;
    }
    public double id (){
        double b= input.nextDouble();
        return b;
    }
    public int ii (){
        int c= input.nextInt();
        return c;
    }
}

所以,我尝试检查它是否有效 - 使用这个:

import java.util.*;
class ShortcutTest{
    Scanner input = new Scanner(System.in);
    public static void main(String args[]){
        ShortCutClass scc = new ShortCutClass();
        scc.pl("So ummmm... How ya doin?");
        scc.p("Connected1 ");
        scc.p("Connected2 ");
        String a=scc.is;
        double b=scc.id;
        int c=scc.ii;
        scc.pl (a);
        scc.pl (b);
        scc.pl (c);        
    }
}

它给了我以下错误: "找不到符号-变量是

我做错了什么? 我该如何解决这个问题?

*** 编辑:

我修复了它,然后遇到了另一个问题...... 我无法打印出 b 或 c,因为我写的 print 需要一个字符串,而 b 和 c 只能是 double 和 int,所以这不起作用。 有什么方法可以改变打印(scc.p 和 scc.pr),以便能够接收任何类型的参数?

【问题讨论】:

  • () 丢失。 double b=scc.id; 应该是 double b=scc.id();
  • isidii 是方法,而不是变量。
  • 这些 cmets 应该是真正的答案。一个好的评论应该是这样的:“你为什么想让你的代码这么难读?”
  • 这段代码的目的是什么?
  • @Roman C - OP 说,“我刚开始学习 Java

标签: java variables input find symbols


【解决方案1】:

这里:

String a=scc.is;
double b=scc.id;
int c=scc.ii;

...你试图引用方法,就好像它们是变量。您需要调用方法:

String a=scc.is();
double b=scc.id();
int c=scc.ii();

作为旁注,我会强烈不鼓励您从一开始就这样做。即使你想要一个方便的类,也请给方法起合理的名称 - writeIntreadInt 等。使用这样的缩写会使代码很难阅读。

【讨论】:

  • 其实不止7377。 ;)
  • 感谢您的回答!问题是,我遇到了另一个问题......请阅读我刚刚在那里写的额外部分......在此先感谢!
  • @user1857509:听起来您希望print 的重载采用doublefloat 参数...
  • 嗯.... Java 新手... 重载?那是什么,我该怎么做?提前谢谢!
  • @user1857509:您在询问之前尝试过搜索吗?如果您是 Java 新手,那么您应该从一本书或结构良好的教程中学习——您是否看到过负载是怎么说的?
【解决方案2】:

那是因为“is”是一种方法,而您正试图将其作为公共变量进行访问。

试试:

String a = scc.is();

【讨论】:

    【解决方案3】:

    排队

    String a=scc.is;
    double b=scc.id;
    

    () 不见了:

    正确的应该是:

    String a=scc.is();
    double b=scc.id();
    

    进一步提示:请删除快捷方式,该代码可读性较差

    【讨论】:

      最近更新 更多