首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >从方法返回值

从方法返回值
EN

Stack Overflow用户
提问于 2015-02-18 19:55:09
回答 3查看 91关注 0票数 1

如何打印a-f点的值,而不让它重复每次输入的内容?如果我的程序每次返回方程也没有解,那我做错了什么呢?

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
public class LinearEquations {
Scanner input = new Scanner(System.in);

private double a, b, c, d, e, f = 0;
double x, y;

public double getA() {
    System.out.println("Enter the value of a: ");
    double a = input.nextDouble();
    return a;
}

public double getB() {
    System.out.println("Enter the value of b: ");
    double b = input.nextDouble();
    return b;
}

public double getC() {
    System.out.println("Enter the value of c: ");
    double c = input.nextDouble();
    return c;
}

public double getD() {
    System.out.println("Enter the value of d: ");
    double d = input.nextDouble();
    return d;
}

public double getE() {
    System.out.println("Enter the value of e: ");
    double e = input.nextDouble();
    return e;
}

public double getF() {
    System.out.println("Enter the value of f: ");
    double f = input.nextDouble();
    return f;
}

public boolean isSolvable() { 
    if ((a * d) - (b * c) == 0){
        return false;
    }
    return true;
}

public double getX() {
    double x = (((e * d) - (b * f)) / ((a * d) - (b * c)));
    return x;
}

public double getY() {
    double y = (((a * f) - (e * c)) / ((a * d) - (b * c)));
    return y;
}

这是主修课

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
public static void main(String[] args) {
    LinearEquations pointA = new LinearEquations();
    LinearEquations pointB = new LinearEquations();
    LinearEquations pointC = new LinearEquations();
    LinearEquations pointD = new LinearEquations();
    LinearEquations pointE = new LinearEquations();
    LinearEquations pointF = new LinearEquations();

    System.out.println(pointA.getA());
    System.out.println(pointB.getB());
    System.out.println(pointC.getC());
    System.out.println(pointD.getD());
    System.out.println(pointE.getE());
    System.out.println(pointF.getF());

    LinearEquations pointX = new LinearEquations();
    LinearEquations pointY = new LinearEquations();

    if (pointX.isSolvable() && pointY.isSolvable()) {
        System.out.println("x is " + pointX.getX() +
                " and y is " + pointY.getY());
    } else {
        System.out.println("The equation has no solution");
    }
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2015-02-19 10:00:30

好吧,让我试着把这里提到的一切都整理好。

您的第一个主要问题是您期望您的变量以某种方式运行,但是您没有正确地处理它们。这是因为您没有正确地使用它们的作用域。

简单地说,变量的作用域是它的可用位置和它的“生存期”。例如,变量a, b, c, d, e, f的作用域是整个类LinearEquaions。这意味着所有这些变量都应该对类的所有成员函数可用,并且只要包含它们的对象存在,这些变量就会存在。该对象以外的任何内容都不应该直接访问这些变量。一旦一个对象死了,它就会杀死它的所有私有变量。

每次在花括号内编写代码时,{}都定义了一个新的作用域。它也被称为“代码块”。在处理作用域和花括号时要记住的一个重要规则是,每个嵌套作用域(在大多数情况下)都可以访问在其包含的对象中定义的变量和函数。这就是为什么一个类的所有函数(基本上是在类‘{}中编写的代码)都可以访问其包含类的私有变量的原因。此外,定义每个函数的代码是,你猜怎么着?在函数的{}中,因此每个函数都有自己的作用域。

这仍然不能直接解释为什么您的代码不能工作。让我们来看看你的一个功能。为了演示范围,我包括了类和变量声明:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
public class LinearEquations {
    Scanner input = new Scanner(System.in);

    private double a, b, c, d, e, f = 0;
    double x, y;

    public double getA() {
        System.out.println("Enter the value of a: ");
        double a = input.nextDouble();
        return a;
    }
.
.
.
}//end of class LinearEquations, and its scope

查看类的作用域,并注意它是如何包含在其中编写的所有代码的。现在,注意定义函数getA()的代码块。在函数之外,您可以按照以下方式定义变量:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
private double a, b, c, d, e, f = 0;

在这里,您会说:我希望所有这些都可以在我的类中的任何地方使用,但只对this类的成员来说,它们都是类型为double,并且等于0。

下一首,

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
public double getA() {
        System.out.println("Enter the value of a: ");
        double a = input.nextDouble();
        return a;
}

double a = input.nextDouble();在函数的范围内定义了一个名为a的新变量,它与类的变量a无关。之所以会出现这种情况,是因为您可以在不同的范围内拥有类似名称的变量。这是您的代码的第一个问题。您会丢失值,因为您不需要在类变量中进行工作和保存它,而是将其保存在一个临时变量中,该变量一旦函数执行完毕就会死掉,并返回它(显然,这不等于保存它)。

要解决这个问题,正如mohmicro所建议的那样,您应该使用this关键字来指定希望编译器更新的变量。换句话说,当使用this.a = input.nextDouble();而不是double a = input.nextDouble();时,您是在说:保存我刚才对类的a变量所做的工作,而不是函数的a变量。同样的过程应该应用于所有getB/C.F函数,并将确保您从用户那里获得的值存储在类中,从而允许isSolvable()getX()getY()使用实际信息访问变量(因为在当前实现中,a, b, c, d, e, f保持为0)。

为了回答你的第二个问题,你的每个功能都完成了一个以上的任务。一般说来,这被认为是不好的做法,并导致功能不连贯。虽然它看起来更有效率,或者使用较少的代码行,但它在试图为维护或调试目的读取代码时增加了混乱。为什么?因为当这个函数有一个以上的时候,或者它不是一个功能的时候,你可能会忽略它的一些目的。

这也是你问题的根源。每次您想获得任何变量a,...,f的值时,都会与用户进行对话,并让用户更改变量的值。这是因为您的函数做了两件事,它设置一个值并返回它。非常不受欢迎。要解决这个问题,你要分而治之。每个get函数都应该分解为两个不同的函数。一种是用用户的值来设置变量,另一种是在需要时获得该值。下面是一个例子:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
public void setA() {
    System.out.println("Enter the value of a: ");
    this.a = input.nextDouble();  //get the value from the user and insert it to the object's variable a
}

public double getA() {
    return a;
}

这样,每当您需要用户为变量a提供一个新值时,就调用setA(),每当需要获取a中的内容时,就调用getA()。一个功能-一个目的。

票数 1
EN

Stack Overflow用户

发布于 2015-02-18 19:58:39

您的逻辑有一些问题,您正在创建8 LinearEquation对象,而实际上只需要1。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
public static void main(String[] args) {
    LinearEquations theOne = new LinearEquations();

    System.out.println(theOne.getA());
    System.out.println(theOne.getB());
    System.out.println(theOne.getC());
    System.out.println(theOne.getD());
    System.out.println(theOne.getE());
    System.out.println(theOne.getF());


    if (theOne.isSolvable()) {
        System.out.println("x is " + theOne.getX() +
                " and y is " + theOne.getY());
    } else {
        System.out.println("The equation has no solution");
    }
}
票数 3
EN

Stack Overflow用户

发布于 2015-02-18 20:36:36

在您的方法中,您不向类成员写入数据。您只需在函数中重新定义一个局部变量并将值写入它。在你的代码中

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
public double getF() {
    System.out.println("Enter the value of f: ");
    double f = input.nextDouble();
    return f;
}

它应该是

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
public double getF() {
    System.out.println("Enter the value of f: ");
    this.f = input.nextDouble();
    return f;
}

这是你旁边的许多对象,每个对象有一个输入值。您应该只使用一个具有所有值的值,以便使方程claclulation工作。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28598347

复制
相关文章
禁止子视图响应父视图的点击事件
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/u010105969/article/details/50970367
用户1451823
2018/09/13
1.7K0
检测项目中或IPA中是否包含UIWebView
将获取的IPA文件后缀改为rar,然后解压缩会得到一个payload文件夹,里面会有一个后缀为app的文件。同样在终端进入此文件夹:
用户6094182
2020/06/30
2.6K0
UIWebView的使用
@interface ViewController ()<UIWebViewDelegate> @property (weak, nonatomic) IBOutlet UIBarButtonItem backItem; @property (weak, nonatomic) IBOutlet UIBarButtonItem forwardItem; @property(nonatomic,weak)UIWebView * webView; (IBAction)back; (IBAction)forwar
大师级码师
2021/10/31
4470
Masonry的使用之利用子视图撑起父视图
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/u010105969/article/details/80521257
用户1451823
2018/09/13
3.4K0
Masonry的使用之利用子视图撑起父视图
【iOS 开发】父视图外部子视图点击响应 - hitTest
面试被问过两次了的一个问题,记录一下:假如一个 UIView(我们称作 FatherView),有一个 subview(我们称作 ChildView),这个 ChildView 在 FatherView 的 frame 外部,那么默认情况下,这个 ChildView 被点击的时候,并不会触发 FatherView 的点击响应链(这是合情合理的,FatherView 所在的位置都没被点击,它不遍历 subviews,不作回应是正常的),这时候怎样才能让这个 ChildView 相应点击事件?
KyXu
2019/04/11
1.1K0
【iOS 开发】父视图外部子视图点击响应 - hitTest
信道划分&介质访问控制&ALOHA协议&CSMA协议&CSMA/CD协议&轮询访问MAC协议
注:最后有面试挑战,看看自己掌握了吗 文章目录 传输数据两种链路 点对点链路 广播式链路 介质访问控制 静态划分信道 动态划分信道 轮询访问介质访问控制 随机访问介质访问控制---所有用户都可以随机发送信息 ALOHA协议------想说就说 CSMA协议------先听再说 1-坚持CSMA 非坚持CSMA p-坚持CSMA CSMA/CD协议-----先听再说,边听边说 CAMA/CA协议------collision avoidance CSMA/CD CSMA/CA区别 轮询访问控制协议MAC 轮询
20岁爱吃必胜客
2022/11/21
7840
信道划分&介质访问控制&ALOHA协议&CSMA协议&CSMA/CD协议&轮询访问MAC协议
视图的alpha属性可能会影响子视图的透明度
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/u010105969/article/details/53037832
用户1451823
2018/09/13
9440
视图的alpha属性可能会影响子视图的透明度
父视图半透明而子视图不半透明
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/u010105969/article/details/50970269
用户1451823
2018/09/13
1.3K0
UIWebView的使用与总结
hh.jpeg 先前在项目中使用了UIWebView 在项目中一些比较复杂的UI布局、需后台灵活控制的界面、原网页,可以考虑UIWebView 在用它之前跟大家说下它的优缺点 优点: 可跨平台 开发一次可以部署iOS、Android等平台。 发布更新快 在服务器端发布,能够实时更新终端展示,便于快速升级以及紧急修复bug 排版布局能力强 强大的HTML+CSS让人膜拜 缺点: 性能 相对于原生的app来说,使用UIWebView的app相对来说性能会低一点,
Bison
2018/06/28
5810
iOS开发小点·移除所有子视图
需求: 移除所有子视图 思路1 - OC的API [view.subviews makeObjectsPerformSelector:@selector(removeFromSuperview)]; 思路2 - 循环 for(UIView *view in [self.view subviews]){ [view removefromsuperview] } 思路3 - 枚举 [[self.view subviews] enumerateObjectsUsingBlock:^(id _Nonn
陈满iOS
2018/10/26
1.5K0
js判断是否是子元素
在while循环中,俺使用赋值运算符=进行迭代,直到不再有父节点,在本例中为el.parentNode返回null时, while循环结束。
IT工作者
2022/01/15
10.8K0
WKWebView
UIWebView自iOS2就有,WKWebView从iOS8.0(2014年9月WWDC)才有,毫无疑问,WKWebView相对UIWebVIew要优秀得多,主要表现在以下几点:
拉维
2019/08/12
6K0
WKWebView
iOS 修改UIWebView的UserAgent
iOS和H5交互的时候,H5需要用userAgent带一些参数,需要我们修改默认的UserAgent为自定义的。 首先,给大家普及一下userAgent的历史,点击UserAgent查看。 1 在Appdelegate里面register一个新的UserAgent //get the original user-agent of webview UIWebView *webView = [[UIWebView alloc] initWithFrame:CGRectZero]; NSStrin
王大锤
2018/05/17
1.4K0
UIWebView与JS的交互
要实现这样一个需求:按照本地的CSS文件展示一串网络获取的带HTML格式的只有body部分的文本,需要自己拼写完整的HTML。除此之外,还需要禁用获取的HTML文本中自带的 < img > 标签自动加载,并把下载图片的操作放在native端来处理,并通过JS将图片在Cache中的地址返回给UIWebview。
用户2491699
2018/08/02
3.7K0
UIWebView与JS的交互
C#嵌入子窗体,判断子窗体是否打开了
/// <summary> /// 嵌入子窗体,判断子窗体是否打开了 /// </summary> public static Form1 f; public void Form1Show() { if (f == null || f.IsDisposed) { f = new Form1 {
landv
2019/03/19
2K0
基于简单对象访问协议的Demo
打开MyEclipse,new一个web service项目,选择WebService FragmentWork为jax-ws
SmileNicky
2019/01/17
8500
UIWebView自适应高度
//webview自适应高度 delegate里面实现 (void)webViewDidFinishLoad:(UIWebView *)webView { NSString *height_str= [webViewstringByEvaluatingJavaScriptFromString: @"document.body.offsetHeight"]; heightCell = [height_str intValue]; webView.frame = CGRectMake(0,0,
用户8671053
2021/10/29
8320
iOS使用WebView简单地应用内显示网页
iOS支持的应用内显示网页的方法有多种,有的还会自动提供下方的工具栏,这里说明最简单的一种:使用WebView来快速实现应用内显示网页内容。
Cloudox
2021/11/23
9200
iOS使用WebView简单地应用内显示网页
MySQL4_联合-子查询-视图-事务-索引
文章目录 MySQL_联合-子查询-视图-事务-索引 1.联合查询 关键字:`union` 2.多表查询 多表查询的分类 内连接(inner join ... on ..) 外连接(outer join) 思考: 交叉连接(cross join) 自然连接(natural join) using函数 练习 3.子查询 in | not in some | any | all exists | not exists 子查询分组 4.视图 创建视图 查询 修改视图 查看创建视图的语句 查看视图的结构 查看所有的
以某
2023/03/07
1K0
点击加载更多

相似问题

如何在绘制新图层时删除先前的图层?

11

uiwebview加载页面时出现问题

10

使用UIwebView加载URL时出现问题

20

渲染包含SVG文件的UIWebView图层

110

从图层中删除菜单时出现问题

30
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文