void GasPump::dispense()
{
bool cont = true;
char stop;
do{
cout << "Press any key, or enter to dispense.\n"
<< "Or press 0 to stop: \n";
cin.get(stop);
gasDispensed = gasDispensed + gasDispensedPerCycle;
charges = costPerGallon*gasDispensed;
displayGasNCharges();
if(stop == 0)
cont = false;
} while(cont);
}
Run Code Online (Sandbox Code Playgroud)
做一个作业,这是我第一个用对象写的程序,所以请耐心等待.我只是无法得到这个代码的输出结果是正确的.我需要一种摆脱循环的方法,而我正在使用的是不起作用.有什么建议,提示或提示吗?
我在某处的某些地方看到了这段代码.我想知道它do
是为了什么.
public class LoopControl {
public static void main(String[] args) {
int count = 0;
do {
if (count % 2 == 0) {
for (int j = 0; j < count; j++) {
System.out.print(j+1);
if (j < count-1) {
System.out.print(", ");
}
}
System.out.println();
}
count++;
}
while (count <= 5);
}
}
Run Code Online (Sandbox Code Playgroud)
我的意思是什么do
意思?它的功能是什么?任何其他信息也是有用的.
我想让用户输入一些字符串,程序接受控制台输入,直到用户输入“/done”..所以它是如何工作的:
打印给用户:输入您的字符串
用户输入:你好日食。
嗨测试等等等等
bla 456 testmore /done
只要用户在任何大小的任何字符串中输入 /done,程序就会中断。如果您按“回车”键,程序将不会结束。它只会在您输入 /done 时结束.. 到目前为止我是如何设置我的程序的:
Scanner 123 = new Scanner(System.in);
string input = "";
System.out.println("Enter your string: ");
do {
input = 123.nextLine();
System.out.print("Rest of program here..");
}
while (!input.equals("/done"));
Run Code Online (Sandbox Code Playgroud)
我尝试在 while 循环下放置如下所示的内容,但我认为我做得不对。
while (!input.equals("/done"));
if input.equals("/done");
break;
}
Run Code Online (Sandbox Code Playgroud)
我知道使用 do-while 循环,只要 while 中的布尔值是假的,它就会继续。所以对于我的程序,程序接受输入直到用户输入 /done 所以布尔值是假的,直到输入字符串 /done 。然后根据上面的逻辑,一旦输入等于“/完成”,程序就会中断
关于我做错了什么的任何想法?
我是全新的,我不知道还能怎么问这个问题,甚至不知道要搜索什么。
情况是这样的:我想浏览带有多个子菜单的菜单。在这个例子中,我将只使用“选项”和“游戏”来说明我的意思。假设您有一个包含 3 个选项的菜单。
1 - 开始
2 - 选项
3 - 退出
选择选项应该会将您带到另一个菜单。然后看起来像
1 - 难度
2 - 声音
3 - 返回
取决于你从这里去哪里,显然会有更多的子菜单。我试过嵌套 do-while 循环和各种事情,但我只是没有足够的理解来知道我做错了什么。
这是我到目前为止所拥有的:
#include <cstdlib>
#include <iostream>
using namespace std;
int main(int argc, char *argv[])
{
int choice;
do{
cout << "Main Menu\n";
cout << "Please make your selection\n";
cout << "1 - Start game\n";
cout << "2 - Options\n";
cout << "3 - Quit\n";
cout << "Selection: ";
cin >> choice;
switch(choice) {
case 1: …
Run Code Online (Sandbox Code Playgroud) 这是一个非常主观的问题,所以我会更具体.有没有时间do-while循环比正常的while循环更好的编码风格?
例如
int count = 0;
do {
System.out.println("Welcome to Java");
count++;
} while (count < 10);`
Run Code Online (Sandbox Code Playgroud)
在评估do语句(也就是强制do语句至少运行一次)之后检查while条件似乎没有意义.
对于像我上面的例子那样简单的东西,我会想象:
int count = 0;
while(count < 10) {
System.out.println("Welcome to Java"); count++;
}
Run Code Online (Sandbox Code Playgroud)
通常被认为是以更好的写作风格写成的.
任何人都可以为我提供一个工作示例,说明什么时候将do-while循环视为唯一/最佳选择?你的代码中有do-while循环吗?它起什么作用?你为什么选择do-while循环?
(我有一种深刻的感觉,do-while循环可能在编码游戏中有用.如果我错了,请纠正我,游戏开发者!)
我是Haskell的新手,如果有人愿意帮助我,我会很高兴的!我试图让这个程序与do while循环一起工作.
第二个getLine命令的结果被放入varible goGlenn,如果goGlenn不等于"start",那么程序将返回到开头
start = do
loop $ do lift performAction
putStrLn "Hello, what is your name?"
name <- getLine
putStrLn ("Welcome to our personality test " ++ name ++ ", inspired by the Big Five Theory.")
putStrLn "You will receive fifty questions in total to which you can reply with Yes or No."
putStrLn "Whenever you feel ready to begin please write Start"
goGlenn <- getLine
putStrLn goGlenn
while (goGlenn /= "start")
Run Code Online (Sandbox Code Playgroud) 我的脚本几乎可以运行了。这样做的目的是从文件中获取定义的值,然后在运行时将这些值填充到 shell 脚本中。
请看看我这里有什么...
第一个文件:ab.sh
#!/bin/bash
USER_TYPE=$1 #IDENTIFY USER TYPE TYPE1,TYPE2,TYPE3,TYPE4
USERNAME=$2
PERMISSION_TYPE=$3 #IDENTIFY PERMISSION TYPE SELECT,UPDATE,DELETE,INSERT
TARGET_USER=$4
TARGET_TABLE=$5
if [ $USER_TYPE == 'TYPE1' ]
then
cat Parameters.conf |while read USERNAME
do
sqlplus / as sysdba << E00
CREATE USER ${USERNAME}
DEFAULT TABLESPACE USERS
TEMPORARY TABLESPACE TEMP
ACCOUNT UNLOCK;
ALTER USER ${USERNAME} DEFAULT ROLE ALL;
GRANT CREATE SESSION TO ${USERNAME};
GRANT CONNECT TO ${USERNAME};
exit
E00
done
cat p.conf |while read PERMISSION_TYPE TARGET_SCHEMA TARGET_TABLE USERNAME
do
sqlplus / as sysdba …
Run Code Online (Sandbox Code Playgroud) 我有以下方法.它的逻辑很简单,如果设置了right,那么当它有一个值(非null)时调用left.当我用以下方式编写它时,它可以工作.
fun goNext(from: Node): Node? {
var prev : Node = from
var next : Node? = from.right
if (next != null) {
prev = next
next = next.left
while (next != null) {
prev = next
next = next.left
}
}
return prev
}
Run Code Online (Sandbox Code Playgroud)
相反,如果我尝试使用do-while循环来缩短代码,那么它就不再是智能强制转换next
了Node
.它显示了这个错误:
Type mismatch.
Required: Node<T>
Found: Node<T>?
Run Code Online (Sandbox Code Playgroud)
代码如下:
fun goNext(from: Node): Node? {
var prev : Node = from
var next : Node? = from.right
if (next != null) {
do …
Run Code Online (Sandbox Code Playgroud) 我在具有以下结构的 C# 方法中有一个循环。
do
{
getUserInput();
if (inputIsBad)
{
doSomethingElse();
}
} while (inputIsBad);
Run Code Online (Sandbox Code Playgroud)
或者,使用 while 循环:
getUserInput();
while (inputIsBad)
{
doSomethingElse();
getUserInput();
}
Run Code Online (Sandbox Code Playgroud)
但是这两种方法都使用了冗余代码:do-while 有一个 if 语句和 while 循环检查相同的条件;while 循环在循环之前和内部都调用 getUserInput()。
是否有一种简单的、非冗余的、非临时的方式来完成这些方法模式所做的事情,无论是一般情况下还是在 C# 中,只涉及编写每个基本组件一次?
这是一个相当初学者的问题,但我想知道为什么我的do...while
循环没有关闭。
当用户输入不是“C”、“c”、“F”或“f”时,程序应该循环。当该while
部分中只有一个布尔表达式有效但不是多个有效时,它似乎关闭。
public class CelsToFaren
{
public static void main(String[] args)
{
// scanner setup
Scanner sc = new Scanner(System.in);
// Variable declarations
int celsius;
int answerC;
int farenheit;
int answerF;
char userLetter;
do
{
// initial menu options
System.out.println("Which temperature would you like to convert from? ");
System.out.println(" >(C)elsius ");
System.out.println(" >(F)arenheit ");
// user input of C, c, F, or f to select option
userLetter = sc.next().charAt(0);
// if user input C or c …
Run Code Online (Sandbox Code Playgroud)