我用Java重写了我的第一个程序,现在它看起来像这样:
import java.util.*;
import static java.lang.Math.*;
public class FirstApp {
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
double a = 0;
double b = 0;
double c = 0;
double delta;
double x1 = 0, x2 = 0;
boolean repeat = false;
boolean decision = false;
System.out.println("Calculator 2.0");
System.out.println("Bartosz Kubacki 6.10.2016");
System.out.println("-------------------------------");
System.out.println("Welcome in Calculator 2.0 which helps you solve Ax^2 + Bx + C = 0.");
do
{
do
{
System.out.println("Enter A param (different from 0: ");
if(input.hasNextDouble())
{
a = input.nextDouble();
if(a == 0)
{
System.out.println("Param A needs to be different from 0!");
}
} else
{
input.nextLine();
System.out.println("Param A must be a number!");
}
} while(a == 0);
do
{
System.out.println("Enter B param: ");
if(input.hasNextDouble())
{
b = input.nextDouble();
repeat = false;
} else
{
input.nextLine();
System.out.println("Param B must be a number!");
repeat = true;
}
} while(repeat);
do
{
System.out.println("Enter C param: ");
if(input.hasNextDouble())
{
c = input.nextDouble();
repeat = false;
} else
{
input.nextLine();
System.out.println("Param C must be a number!");
repeat = true;
}
} while(repeat);
// Counting.. and showing results
delta = pow(b, 2) - (4 * a * c);
if(delta == 0)
{
x1 = (0 - b) / 2 * a;
System.out.printf("There is one solution: %.2f\n", x1);
} else if(delta > 0)
{
x1 = ((0 - b) - sqrt(delta)) / 2 * a;
x2 = (b + sqrt(delta)) / 2 * a;
System.out.printf("There are two solutions: %.2f and %.2f\n", x1, x2);
} else
{
System.out.println("There is no solution.");
}
// Decyzja o kolejnych działaniach
do
{
System.out.println("Want make another eqation? [Y/N] ");
String dec = null;
if(input.hasNext("Y") || input.hasNext("N") || input.hasNext("y") || input.hasNext("n"))
{
dec = input.nextLine();
if(dec.equalsIgnoreCase("Y"))
decision = true;
else
decision = false;
repeat = false;
} else
{
input.nextLine();
repeat = true;
}
} while(repeat);
} while(decision);
input.close();
}
}
实际上一切都很顺利,除了:
>
当我在输入a、B和C的值时输入一个非数字类型时,会显示一个双重警告,然后它就会正常工作。(仅1个警告)
当我回答Y或N时,程序终止,但如果我输入任何其他内容,如“g”、“2”或“w”等,程序会再次询问我(第一次也是两次),然后当我输入Y或N,它工作得很好。
我真的不知道这是怎么回事,因为在编译过程中没有警告或错误。
感谢所有答案。:)
// Decyzja o kolejnych działaniach
String dec = null;
input.nextLine();
do
{
System.out.println("Want make another eqation? [Y/N]: ");
dec = input.nextLine();
if(dec.equalsIgnoreCase("Y")) {
decision = true;
repeat = false;
}
else if(dec.equalsIgnoreCase("n")){
decision = false;
repeat = false;
} else
repeat = true;
} while(repeat);
我已经根据需要编辑了你的代码。我个人不会这样编码,但我宁愿做最小的更改。
你上一个循环每次循环时都会制作一个新的 String dec
。这没关系,但不推荐。我把它移到了循环的上方。
我还必须在循环之前获取输入,以防止它出错。里面肯定有一些剩菜。
然后,我删除了您的< code>hasNext()条件,只读取输入,因为他们要输入什么并不重要,您只需要关心它是< code>Y还是< code>N,我添加了适当的< code>if语句。
那就行了。像它应该的那样工作。
这是哲学家进餐问题的另一个实现,这是家庭作业问题,我将在这里展示我迄今为止所做的尝试: 大部分的代码是准备好的,除了和方法需要改变,我所做的就是添加这个: 和 我知道这不是线程安全的,这个链接也保证了这一点。真正的神话是老师希望我们使用lock来解决这个问题,我可以在和中锁定/解锁互斥锁,锁定和解锁两个锁(choppestick[philosopherNumber].lock();和筷子[(哲学家
问题内容: 我有以下课程: 我有 为什么以下原因导致错误: 有任何想法吗? 问题答案: 对Java泛型的引用很好(jdk site )。 确实,@ Oli_Charlesworth提供了一个很好的答案,但也许这个答案会更完整。 在中,您不能插入任何正确的内容。 如果你有 和 然后,是两者的超类型: 因此写一些像这样的声明是合法的 这确实是通配符表示法存在的原因。 但是,这里的事情变得越来越有趣:
尝试从同一命名空间中的另一个服务连接到一个服务。使用ClusterIP创建服务。创建服务后使用该Ip访问服务。请求有时成功,有时失败,我看到两个pod都启动并运行。以下是服务配置
我知道Apache Cassandra的这种问题已经有一段时间了,例如:Pentaho帧大小(17727647)大于最大长度(16384000)!和thrift _ max _ message _ length _ in _ MB未识别卡桑德拉 但是我的问题有点不同。我使用Cassandra v2.0.7,我想将Pentaho Kettle(5.1)的数据插入Cassandra。我必须启用加密(S
问题内容: 我正在尝试在do while循环中发送多个帖子,但未添加结果 输出为:5、5、5、5、5, 我需要的输出是:1、2、3、4、5 问题答案: 由于AJAX的异步特性,当您的成功函数针对任何产生的AJAX请求运行时,循环已完成并将其设置为5。您需要捕获每个请求开始时的状态并使用捕获的状态方法中的状态。关闭值是最简单的方法: 但是,请理解,一个或多个请求可能会挂在服务器上,从而使后一个请求先
问题内容: [注:]我正在浏览问题页面,真的对“ DIVS vs表”,“何时使用表vs DIVS”,“ Divs比表更好”,“ Tables vs CSS”以及所有问 相同 的问题感到厌倦 天哪, 但我想看看人们如何处理“为什么要放弃并使用表格”这一典型例子的翻译: 问题: 如何最好地(有意义地,简单地,稳健地,流畅地,可移植地)实现没有表的上述内容。对于初学者,我猜想一个幼稚的实现会在第一列中使