Please give a comment on this program.
This program is to find a product, size and color. It is abstract program.
abstract class Pants{
protected string pro_code;
protected int size=0;
protected string color;
boolean sizeIs(string s)
boolean colorIs(string c)
boolean buttonFront(string b)
public Pants(string p, int s, string c){
pro_code=p; size=s; color = c;}
public boolean size( ){
s.size=sizeIs;
system.out.println("size");
if(sizeIs ==true)
system.out.println(sizeIs);
public boolean color( ){
colour = colorIs;
system.out.println("color");
if(colourIs = true)
system.out.println(color)
public boolean buttonFront( ){
if(buttonFront ==true)
system.out.println("zipper");
else
system.out.println("button");
public class test{
public static void main (string[ ]args){
system.out.println("Input Product code:");
p.pro_code;
Pants p = newPants[2];
Pants p1 = newPants[2];
for (int i = 0; i<=2; i++){
system.out.println(p.pro_code + p.size +p.color)
system.out.println(p1.pro_code + p1.size +p1.color)
}
before I comment on the code, its better to ask the compiler, since compiler is one whose comments really matter, so please try to compile your code first.
Secondly which aspect you want your code to be reviewed from :
Readability
Maintainabilty
Reusability
From an OO perspective or otherwise. Your question is too generic in nature
Similar Messages
-
Unable to charge my Ipad 4 with my Laptop (HP 7010tx) USB . I am Getting error message as "Not Charging" . Please give a solution for this ...???
The quickest way (and really the only way) to charge your iPad is with the included 10W or 12W (5W on Mini) USB Power Adapter. iPad will also charge, although more slowly, when attached to a computer with a high-power USB port (many recent Mac computers) or with an iPhone Power Adapter (5W). When attached to a computer via a standard USB port (2.5W, most PCs or older Mac computers) iPad will charge very slowly (but iPad indicates not charging). Make sure your computer is on while charging iPad via USB. If iPad is connected to a computer that’s turned off or is in sleep or standby mode, the iPad battery will continue to drain.
Apple recommends that once a month you let the iPad fully discharge & then recharge to 100%.
How to Calibrate Your Mac, iPhone, or iPad Battery
http://www.macblend.com/how-to-calibrate-your-mac-iphone-or-ipad-battery/
At this link http://www.tomshardware.com/reviews/galaxy-tab-android-tablet,3014-11.html , tests show that the iPad 2 battery (25 watt-hours) will charge to 90% in 3 hours 1 minute. It will charge to 100% in 4 hours 2 minutes. The new iPad has a larger capacity battery (42 watt-hours), so using the 10W charger will obviously take longer. If you are using your iPad while charging, it will take even longer. It's best to turn your new iPad OFF and charge over night. Also look at The iPad's charging challenge explained http://www.macworld.com/article/1150356/ipadcharging.html
Also, if you have a 3rd generation iPad, look at
Apple: iPad Battery Nothing to Get Charged Up About
http://allthingsd.com/20120327/apple-ipad-battery-nothing-to-get-charged-up-abou t/
Apple Explains New iPad's Continued Charging Beyond 100% Battery Level
http://www.macrumors.com/2012/03/27/apple-explains-new-ipads-continued-charging- beyond-100-battery-level/
New iPad Takes Much Longer to Charge Than iPad 2
http://www.iphonehacks.com/2012/03/new-ipad-takes-much-longer-to-charge-than-ipa d-2.html
Apple Batteries - iPad http://www.apple.com/batteries/ipad.html
Extend iPad Battery Life (Look at pjl123 comment)
https://discussions.apple.com/thread/3921324?tstart=30
New iPad Slow to Recharge, Barely Charges During Use
http://www.pcworld.com/article/252326/new_ipad_slow_to_recharge_barely_charges_d uring_use.html
Best Practices for iPad Battery Charging
http://www.ilounge.com/index.php/articles/comments/best-practices-for-ipad-batte ry-charging/
Tips About Charging for New iPad 3
http://goodscool-electronics.blogspot.com/2012/04/tips-about-charging-for-new-ip ad-3.html
How to Save and Prolong the battery life of your new ipad
https://discussions.apple.com/thread/4480944?tstart=0
Prolong battery lifespan for iPad / iPad 2 / iPad 3: charging tips
http://thehowto.wikidot.com/prolong-battery-lifespan-for-ipad
iPhone, iPod, Using the iPad Charger
http://support.apple.com/kb/HT4327
Install and use Battery Doctor HD
http://itunes.apple.com/tw/app/battery-doctor-hd/id459702901?mt=8
To Extend a Device’s Battery Life, Get to Know It Better
http://tinyurl.com/b67c7xz
iPad Battery Replacement
http://www.apple.com/batteries/replacements.html
In rare instances when using the Camera Connection Kit, you may notice that iPad does not charge after using the Camera Connection Kit. Disconnecting and reconnecting the iPad from the charger will resolve this issue.
Cheers, Tom -
I want to start a new iTunes U course for catolog and I don't know what can I do please give me description about this title.
If you haven't already done so then you can contact iTunes support via this page and ask them why the message is appearing (these are user-to-user forums, we won't know why) : http://www.apple.com/support/itunes/contact/ - click on Contact iTunes Store Support on the right-hand side of the page
-
Is Apple providing any karaoke service such as selling karaoke software, whole set of karaoke hardware or even karaoke store? If yes, please give me information on this; If no, let me know if there are similar karaoke services providing in the future.
No, Apple does not. What other companies might provide what you're looking for I don't know. Try searching the web for "karaoke software" or something similar.
Regards. -
Please give the meaning of this 9.2.0.7
please give the meaning of this 9.2.0.7
each number represents what?It's a version number. They're quite common in the computer industry.
The first number is the version of the database. This supposedly represents major changes in database functionality (usually there's a big idea Oracle 8 was ORDBMS, 9 was (I think) XML, 10 was definitely grid, who knows what 11 will bring).
The second and third numbers represent incremental releases - these represent enhances to the main release. Deciding whether the next release after 9.0.7 should be numbered 9.0.8 or 9.1.0 is often just down to marketing.
The fourth number is a patch release and just represents a package of bug fixes.
It's interersting (well, mildly diverting) that 8i went from 8.1.5 through to 8.1.7.4 but never made it to 8.2. That eventually became 9.0.1.
Is that what you wanted to know?
Cheers, APC -
sir since update of ios 8.1.2 i got serious battery problem on 3g 4.30 hrs my battery gets low and sometimes serious net probelms please give an update for this issue its not alone me my friends too getting many problem commonly battery problem please can this be resolved
its not related to any hardware because last year april i got replacement new phone from apple and i maintained it well...!Probably apps running in the background are causing this, sometimes Mail get's stuck connecting to the mail server, or some social media app like Facebook can also be a reason for prolonged background activity.
Try to reset the phone by holding the sleep and home button for about 10sec, until the Apple logo comes back again. You will not lose any data by resetting, but it can cure some glitches.
If this does not help, setting it up as new device would be the next step:
How to erase your iOS device and then set it up as a new device or restore it from backups
Also take a look at these tips to prolong the battery life again:
http://www.overthought.org/blog/2014/the-ultimate-guide-to-solving-ios-battery-d rain -
Hello Experts please give some suggestions in this code
Hello Experts . Please give suggestions in changing the below code to increase the performance . Thanks in advance for all your suggestions...
PARAMETERS : Pr_WERKS LIKE EKPO-WERKS OBLIGATORY,
Pr_EINDT LIKE EKET-EINDT OBLIGATORY.
SELECT-OPTIONS : S_LIFNR FOR EKKO-LIFNR MATCHCODE
OBJECT KRED OBLIGATORY.
DATA: BEGIN OF SELEC OCCURS 10,
SIGN(1),
OPTION(2),
LOW LIKE p_eindt,
HIGH LIKE p_eindt,
END OF SELEC.
SELEC-SIGN = 'I'.
SELEC-OPTION = 'BT'.
SELEC-LOW = pr_eindt.
SELEC-HIGH = pr_eindt + 31.
SELECT * FROM EKET WHERE EINDT IN SELEC.
CHECK EKET-MENGE NE 0.
SELECT * FROM EKPO WHERE EBELN = EKET-EBELN AND
EBELP = EKET-EBELP AND
WERKS = Pr_WERKS.
SELECT * FROM EKKO WHERE EBELN = EKET-EBELN AND
LIFNR IN S_LIFNR AND
BSTYP = 'L' AND
FRGKE = 'R'.
SELECT SINGLE * FROM MAKT WHERE MATNR = EKPO-MATNR AND
SPRAS = 'EN'.
SELECT SINGLE * FROM LFA1 WHERE LIFNR = EKKO-LIFNR.
EXTRACT DETAIL.
ENDSELECT.
ENDSELECT.
ENDSELECT.Ways of Performance Tuning
1. Selection Criteria
2. Select Statements
Select Queries
SQL Interface
Aggregate Functions
For all Entries
Select Over more than one internal table
Selection Criteria
1. Restrict the data to the selection criteria itself, rather than filtering it out using the ABAP code using CHECK statement.
2. Select with selection list.
SELECT * FROM SBOOK INTO SBOOK_WA.
CHECK: SBOOK_WA-CARRID = 'LH' AND
SBOOK_WA-CONNID = '0400'.
ENDSELECT.
The above code can be much more optimized by the code written below which avoids CHECK, selects with selection list
SELECT CARRID CONNID FLDATE BOOKID FROM SBOOK INTO TABLE T_SBOOK
WHERE SBOOK_WA-CARRID = 'LH' AND
SBOOK_WA-CONNID = '0400'.
Select Statements Select Queries
1. Avoid nested selects
SELECT * FROM EKKO INTO EKKO_WA.
SELECT * FROM EKAN INTO EKAN_WA
WHERE EBELN = EKKO_WA-EBELN.
ENDSELECT.
ENDSELECT.
The above code can be much more optimized by the code written below.
SELECT PF1 PF2 FF3 FF4 INTO TABLE ITAB
FROM EKKO AS P INNER JOIN EKAN AS F
ON PEBELN = FEBELN.
Note: A simple SELECT loop is a single database access whose result is passed to the ABAP program line by line. Nested SELECT loops mean that the number of accesses in the inner loop is multiplied by the number of accesses in the outer loop. One should therefore use nested SELECT loops only if the selection in the outer loop contains very few lines or the outer loop is a SELECT SINGLE statement.
2. Select all the records in a single shot using into table clause of select statement rather than to use Append statements.
SELECT * FROM SBOOK INTO SBOOK_WA.
CHECK: SBOOK_WA-CARRID = 'LH' AND
SBOOK_WA-CONNID = '0400'.
ENDSELECT.
The above code can be much more optimized by the code written below which avoids CHECK, selects with selection list and puts the data in one shot using into table
SELECT CARRID CONNID FLDATE BOOKID FROM SBOOK INTO TABLE T_SBOOK
WHERE SBOOK_WA-CARRID = 'LH' AND
SBOOK_WA-CONNID = '0400'.
3. When a base table has multiple indices, the where clause should be in the order of the index, either a primary or a secondary index.
To choose an index, the optimizer checks the field names specified in the where clause and then uses an index that has the same order of the fields. In certain scenarios, it is advisable to check whether a new index can speed up the performance of a program. This will come handy in programs that access data from the finance tables.
4. For testing existence, use Select.. Up to 1 rows statement instead of a Select-Endselect-loop with an Exit.
SELECT * FROM SBOOK INTO SBOOK_WA
UP TO 1 ROWS
WHERE CARRID = 'LH'.
ENDSELECT.
The above code is more optimized as compared to the code mentioned below for testing existence of a record.
SELECT * FROM SBOOK INTO SBOOK_WA
WHERE CARRID = 'LH'.
EXIT.
ENDSELECT.
5. Use Select Single if all primary key fields are supplied in the Where condition .
If all primary key fields are supplied in the Where conditions you can even use Select Single.
Select Single requires one communication with the database system, whereas Select-Endselect needs two.
Select Statements SQL Interface
1. Use column updates instead of single-row updates
to update your database tables.
SELECT * FROM SFLIGHT INTO SFLIGHT_WA.
SFLIGHT_WA-SEATSOCC =
SFLIGHT_WA-SEATSOCC - 1.
UPDATE SFLIGHT FROM SFLIGHT_WA.
ENDSELECT.
The above mentioned code can be more optimized by using the following code
UPDATE SFLIGHT
SET SEATSOCC = SEATSOCC - 1.
2. For all frequently used Select statements, try to use an index.
SELECT * FROM SBOOK CLIENT SPECIFIED INTO SBOOK_WA
WHERE CARRID = 'LH'
AND CONNID = '0400'.
ENDSELECT.
The above mentioned code can be more optimized by using the following code
SELECT * FROM SBOOK CLIENT SPECIFIED INTO SBOOK_WA
WHERE MANDT IN ( SELECT MANDT FROM T000 )
AND CARRID = 'LH'
AND CONNID = '0400'.
ENDSELECT.
3. Using buffered tables improves the performance considerably.
Bypassing the buffer increases the network considerably
SELECT SINGLE * FROM T100 INTO T100_WA
BYPASSING BUFFER
WHERE SPRSL = 'D'
AND ARBGB = '00'
AND MSGNR = '999'.
The above mentioned code can be more optimized by using the following code
SELECT SINGLE * FROM T100 INTO T100_WA
WHERE SPRSL = 'D'
AND ARBGB = '00'
AND MSGNR = '999'.
Select Statements Aggregate Functions
If you want to find the maximum, minimum, sum and average value or the count of a database column, use a select list with aggregate functions instead of computing the aggregates yourself.
Some of the Aggregate functions allowed in SAP are MAX, MIN, AVG, SUM, COUNT, COUNT( * )
Consider the following extract.
Maxno = 0.
Select * from zflight where airln = LF and cntry = IN.
Check zflight-fligh > maxno.
Maxno = zflight-fligh.
Endselect.
The above mentioned code can be much more optimized by using the following code.
Select max( fligh ) from zflight into maxno where airln = LF and cntry = IN.
Select Statements For All Entries
The for all entries creates a where clause, where all the entries in the driver table are combined with OR. If the number of entries in the driver table is larger than rsdb/max_blocking_factor, several similar SQL statements are executed to limit the length of the WHERE clause.
The plus
Large amount of data
Mixing processing and reading of data
Fast internal reprocessing of data
Fast
The Minus
Difficult to program/understand
Memory could be critical (use FREE or PACKAGE size)
Points to be must considered FOR ALL ENTRIES
Check that data is present in the driver table
Sorting the driver table
Removing duplicates from the driver table
Consider the following piece of extract
Loop at int_cntry.
Select single * from zfligh into int_fligh
where cntry = int_cntry-cntry.
Append int_fligh.
Endloop.
The above mentioned can be more optimized by using the following code.
Sort int_cntry by cntry.
Delete adjacent duplicates from int_cntry.
If NOT int_cntry[] is INITIAL.
Select * from zfligh appending table int_fligh
For all entries in int_cntry
Where cntry = int_cntry-cntry.
Endif.
Select Statements Select Over more than one Internal table
1. Its better to use a views instead of nested Select statements.
SELECT * FROM DD01L INTO DD01L_WA
WHERE DOMNAME LIKE 'CHAR%'
AND AS4LOCAL = 'A'.
SELECT SINGLE * FROM DD01T INTO DD01T_WA
WHERE DOMNAME = DD01L_WA-DOMNAME
AND AS4LOCAL = 'A'
AND AS4VERS = DD01L_WA-AS4VERS
AND DDLANGUAGE = SY-LANGU.
ENDSELECT.
The above code can be more optimized by extracting all the data from view DD01V_WA
SELECT * FROM DD01V INTO DD01V_WA
WHERE DOMNAME LIKE 'CHAR%'
AND DDLANGUAGE = SY-LANGU.
ENDSELECT
2. To read data from several logically connected tables use a join instead of nested Select statements. Joins are preferred only if all the primary key are available in WHERE clause for the tables that are joined. If the primary keys are not provided in join the Joining of tables itself takes time.
SELECT * FROM EKKO INTO EKKO_WA.
SELECT * FROM EKAN INTO EKAN_WA
WHERE EBELN = EKKO_WA-EBELN.
ENDSELECT.
ENDSELECT.
The above code can be much more optimized by the code written below.
SELECT PF1 PF2 FF3 FF4 INTO TABLE ITAB
FROM EKKO AS P INNER JOIN EKAN AS F
ON PEBELN = FEBELN.
3. Instead of using nested Select loops it is often better to use subqueries.
SELECT * FROM SPFLI
INTO TABLE T_SPFLI
WHERE CITYFROM = 'FRANKFURT'
AND CITYTO = 'NEW YORK'.
SELECT * FROM SFLIGHT AS F
INTO SFLIGHT_WA
FOR ALL ENTRIES IN T_SPFLI
WHERE SEATSOCC < F~SEATSMAX
AND CARRID = T_SPFLI-CARRID
AND CONNID = T_SPFLI-CONNID
AND FLDATE BETWEEN '19990101' AND '19990331'.
ENDSELECT.
The above mentioned code can be even more optimized by using subqueries instead of for all entries.
SELECT * FROM SFLIGHT AS F INTO SFLIGHT_WA
WHERE SEATSOCC < F~SEATSMAX
AND EXISTS ( SELECT * FROM SPFLI
WHERE CARRID = F~CARRID
AND CONNID = F~CONNID
AND CITYFROM = 'FRANKFURT'
AND CITYTO = 'NEW YORK' )
AND FLDATE BETWEEN '19990101' AND '19990331'.
ENDSELECT.
1. Table operations should be done using explicit work areas rather than via header lines.
READ TABLE ITAB INTO WA WITH KEY K = 'X BINARY SEARCH.
IS MUCH FASTER THAN USING
READ TABLE ITAB INTO WA WITH KEY K = 'X'.
If TAB has n entries, linear search runs in O( n ) time, whereas binary search takes only O( log2( n ) ).
2. Always try to use binary search instead of linear search. But dont forget to sort your internal table before that.
READ TABLE ITAB INTO WA WITH KEY K = 'X'. IS FASTER THAN USING
READ TABLE ITAB INTO WA WITH KEY (NAME) = 'X'.
3. A dynamic key access is slower than a static one, since the key specification must be evaluated at runtime.
4. A binary search using secondary index takes considerably less time.
5. LOOP ... WHERE is faster than LOOP/CHECK because LOOP ... WHERE evaluates the specified condition internally.
LOOP AT ITAB INTO WA WHERE K = 'X'.
ENDLOOP.
The above code is much faster than using
LOOP AT ITAB INTO WA.
CHECK WA-K = 'X'.
ENDLOOP.
6. Modifying selected components using MODIFY itab TRANSPORTING f1 f2.. accelerates the task of updating a line of an internal table.
WA-DATE = SY-DATUM.
MODIFY ITAB FROM WA INDEX 1 TRANSPORTING DATE.
The above code is more optimized as compared to
WA-DATE = SY-DATUM.
MODIFY ITAB FROM WA INDEX 1.
7. Accessing the table entries directly in a "LOOP ... ASSIGNING ..." accelerates the task of updating a set of lines of an internal table considerably
Modifying selected components only makes the program faster as compared to Modifying all lines completely.
e.g,
LOOP AT ITAB ASSIGNING <WA>.
I = SY-TABIX MOD 2.
IF I = 0.
<WA>-FLAG = 'X'.
ENDIF.
ENDLOOP.
The above code works faster as compared to
LOOP AT ITAB INTO WA.
I = SY-TABIX MOD 2.
IF I = 0.
WA-FLAG = 'X'.
MODIFY ITAB FROM WA.
ENDIF.
ENDLOOP.
8. If collect semantics is required, it is always better to use to COLLECT rather than READ BINARY and then ADD.
LOOP AT ITAB1 INTO WA1.
READ TABLE ITAB2 INTO WA2 WITH KEY K = WA1-K BINARY SEARCH.
IF SY-SUBRC = 0.
ADD: WA1-VAL1 TO WA2-VAL1,
WA1-VAL2 TO WA2-VAL2.
MODIFY ITAB2 FROM WA2 INDEX SY-TABIX TRANSPORTING VAL1 VAL2.
ELSE.
INSERT WA1 INTO ITAB2 INDEX SY-TABIX.
ENDIF.
ENDLOOP.
The above code uses BINARY SEARCH for collect semantics. READ BINARY runs in O( log2(n) ) time. The above piece of code can be more optimized by
LOOP AT ITAB1 INTO WA.
COLLECT WA INTO ITAB2.
ENDLOOP.
SORT ITAB2 BY K.
COLLECT, however, uses a hash algorithm and is therefore independent
of the number of entries (i.e. O(1)) .
9. "APPEND LINES OF itab1 TO itab2" accelerates the task of appending a table to another table considerably as compared to LOOP-APPEND-ENDLOOP.
APPEND LINES OF ITAB1 TO ITAB2.
This is more optimized as compared to
LOOP AT ITAB1 INTO WA.
APPEND WA TO ITAB2.
ENDLOOP.
10. DELETE ADJACENT DUPLICATES accelerates the task of deleting duplicate entries considerably as compared to READ-LOOP-DELETE-ENDLOOP.
DELETE ADJACENT DUPLICATES FROM ITAB COMPARING K.
This is much more optimized as compared to
READ TABLE ITAB INDEX 1 INTO PREV_LINE.
LOOP AT ITAB FROM 2 INTO WA.
IF WA = PREV_LINE.
DELETE ITAB.
ELSE.
PREV_LINE = WA.
ENDIF.
ENDLOOP.
11. "DELETE itab FROM ... TO ..." accelerates the task of deleting a sequence of lines considerably as compared to DO -DELETE-ENDDO.
DELETE ITAB FROM 450 TO 550.
This is much more optimized as compared to
DO 101 TIMES.
DELETE ITAB INDEX 450.
ENDDO.
12. Copying internal tables by using ITAB2[ ] = ITAB1[ ] as compared to LOOP-APPEND-ENDLOOP.
ITAB2[] = ITAB1[].
This is much more optimized as compared to
REFRESH ITAB2.
LOOP AT ITAB1 INTO WA.
APPEND WA TO ITAB2.
ENDLOOP.
13. Specify the sort key as restrictively as possible to run the program faster.
SORT ITAB BY K. makes the program runs faster as compared to SORT ITAB.
Internal Tables contd
Hashed and Sorted tables
1. For single read access hashed tables are more optimized as compared to sorted tables.
2. For partial sequential access sorted tables are more optimized as compared to hashed tables
Hashed And Sorted Tables
Point # 1
Consider the following example where HTAB is a hashed table and STAB is a sorted table
DO 250 TIMES.
N = 4 * SY-INDEX.
READ TABLE HTAB INTO WA WITH TABLE KEY K = N.
IF SY-SUBRC = 0.
ENDIF.
ENDDO.
This runs faster for single read access as compared to the following same code for sorted table
DO 250 TIMES.
N = 4 * SY-INDEX.
READ TABLE STAB INTO WA WITH TABLE KEY K = N.
IF SY-SUBRC = 0.
ENDIF.
ENDDO.
Point # 2
Similarly for Partial Sequential access the STAB runs faster as compared to HTAB
LOOP AT STAB INTO WA WHERE K = SUBKEY.
ENDLOOP.
This runs faster as compared to
LOOP AT HTAB INTO WA WHERE K = SUBKEY.
ENDLOOP. -
Please give the meaning of this code
Hi anyone please give the meaning of the below mentioned modify command code
READ TABLE XKOMV INTO L_XKOMV
WITH KEY
KSCHL = 'ZGBC'.
IF sy-subrc = 0.
XKOMV-KINAK = 'X'.
<b>MODIFY XKOMV TRANSPORTING KINAK WHERE KSCHL = 'ZFIK'.</b>
ENDIF.
Point will be sure.
vijaiHello Vijaya,
Its reading the Conditiuon table and checking for the condition type ZGBC in the document condition table. If it exists then its makeing the Condition ZFIK as in active. So During pricing, the system ignores conditions that are valid but not active in this case ZFIK.
Regards,
<b>Reward Points if Useful</b>
Sake Sharma -
I am not happy with this program. Please cancel my subscription.
Hi shann1473,
I'm sorry that your subscription didn't meet your needs. I just looked at your account, and I'm not able to cancel it myself. Please contact Adobe Customer Support; they'll be able to take care of that quickly for you. Here is the contact information:
Contact Customer Care.
I apologize for the inconvenience.
Best,
Sara -
Please wat is wrong with this program
I want to reverse the user input but when I run this program it only asks for the input and when i key it in and press enter nothing happens.It just freezes.
Sorry the code is a bit long .
import java.io.*;
class StackX
private int maxSize;
private char[] stackArray;
private int top;
public StackX(int max)
maxSize=max;
stackArray=new char[maxSize];
top=-1;
public void push(char j)
stackArray[++top]=j;
public char pop()
return stackArray[top--];
public char peek()
return stackArray[top];
public boolean isEmpty()
return (top==-1);
class Reverser
private String input;
private String output;
public Reverser(String in)
{input = in;}
public String doRev( )
int stackSize=input.length( );
StackX theStack = new StackX(stackSize);
for(int j=0;j<input.length( );j++)
char ch=input.charAt(j);
theStack.push(ch);
output ="";
while( !theStack.isEmpty() )
char ch=theStack.pop();
output=output+ch;
return output;
class ReverseApp
public static void main(String[]args)throws IOException
String input, output;
while(true)
System.out.print("Enter a string:");
System.out.flush();
input=getString();
if( input.equals(""))
break;
Reverser theReverser = new Reverser(input);
output = theReverser.doRev();
System.out.println("Reversed: " + output);
public static String getString()throws IOException
InputStreamReader isr = new InputStreamReader(System.in);
BufferedReader br= new BufferedReader(isr);
String s = br.readLine();
return s;
}One potential problem is that you're using a new reader around system.in every time. I don't know what happens when you do that. Just make it a member variable, or create it once in main and pass it to getString.
Asid from that, put a bunch of print statements in or use a debugger to see what's happening at each step of the way. You might be getting into an infinite loop somewhere in your reverse operation. -
Please give me flowchart for this code...
Writing a Java applet to communicate with a serial device attached to the Device
Server is very straightforward. However, familiarity with Java programming and a
Java compiler are required.
As with any network application, open a communication channel to the remote
device. In our example, a socket is opened and and two data streams are created to
perform the actual sending and receiving of data.
The following example uses a new Java Class called tcpip. Copy the following code
into a file called tcpip.java.
import java.*;
import java.lang.*;
import java.net.*;
import java.util.*;
import java.io.*;
* This class opens a TCP connection, and allows reading and writing of byte
arrays.
public class tcpip
protected Socket s = null;
public DataInputStream dis = null;
protected DataOutputStream dos = null;
public tcpip(InetAddress ipa, int port)
Socket s1 = null;
try { // Open the socket
s1 = new Socket(ipa.getHostAddress(), port);
catch (IOException e) {
System.out.println("Error opening socket");
return;
s = s1;
try { // Create an input stream
dis = new DataInputStream(new
BufferedInputStream(s.getInputStream()));
catch(Exception ex) {
System.out.println("Error creating input stream");
try { // Create an output stream
dos = new DataOutputStream(new
BufferedOutputStream(s.getOutputStream()));
catch(Exception ex) {
System.out.println("Error creating output stream");
public synchronized void disconnect()
if (s != null) {
try {
s.close();
catch (IOException e){}
public synchronized void send(byte[] temp)
try {
dos.write(temp, 0, temp.length);
dos.flush();
catch(Exception ex) {
System.out.println("Error sending data : " + ex.toString());
public synchronized void send(byte[] temp, int len)
try {
dos.write(temp, 0, len);
dos.flush();
catch(Exception ex) {
System.out.println("Error sending data : " + ex.toString());
public synchronized void send(String given)
// WARNING: this routine may not properly convert Strings to bytes
int length = given.length();
byte[] retvalue = new byte[length];
char[] c = new char[length];
given.getChars(0, length, c, 0);
for (int i = 0; i < length; i++) {
retvalue[i] = (byte)c;
send(retvalue);
public synchronized byte[] receive()
byte[] retval = new byte[0];
try {
while(dis.available() == 0); /* Wait for data */
catch (IOException e){}
try {
retval = new byte[dis.available()];
catch (IOException e){}
try {
dis.read(retval);
catch (IOException e){}
return(retval);
public int available()
int avail;
avail = 0;
try {
avail = dis.available();
catch (IOException e) {}
return(avail);
Next, create the Text_io class as the application. Copy the following code
into a file called �Text_io.java�.
import java.awt.*;
import java.awt.event.*;
import java.lang.*;
public class Text_io extends Panel implements Runnable,
TextListener {
private tcpip gtp;
String oldmessage = new String("");
TextArea input_box = new TextArea("", 10, 60, 3);
TextArea output_box = new TextArea("", 10, 60, 3);
Thread timer;
public Text_io(tcpip tp) {
gtp = tp;
setLayout(new GridBagLayout());
GridBagConstraints c = new GridBagConstraints();
c.insets = new Insets(5,5,5,5);
setBackground(java.awt.Color.lightGray);
setSize(561,380);
c.gridx = 0; c.gridy = 2; c.gridwidth = 1; c.gridheight =
1;
c.weightx = 0.0; c.weighty = 0.0; c.anchor =
GridBagConstraints.WEST;
c.fill = GridBagConstraints.NONE;
add((new Label("To Device Server: (Type Here--->)")), c);
//input_box
input_box.addTextListener(this);
c.gridx = 1; c.gridy = 2; c.gridwidth = 3; c.gridheight =
1;
c.weightx = 0.5; c.weighty = 0.0; c.anchor =
GridBagConstraints.CENTER;
c.fill = GridBagConstraints.BOTH;
add(input_box,c);
c.gridx = 0; c.gridy = 4; c.gridwidth = 1; c.gridheight =
1;
c.weightx = 0.0; c.weighty = 0.0; c.anchor =
GridBagConstraints.WEST;
c.fill = GridBagConstraints.NONE;
add((new Label("From Device Server:")), c);
c.gridx = 1; c.gridy = 4; c.gridwidth = 3; c.gridheight =
1;
c.weightx = 0.5; c.weighty = 0.0; c.anchor =
GridBagConstraints.CENTER;
c.fill = GridBagConstraints.BOTH;
add(output_box,c);
output_box.setEditable(false);
timer = new Thread(this);
timer.start();
public void run() {
int i;
byte[] in;
Thread me = Thread.currentThread();
while (timer == me) {
try {
Thread.currentThread().sleep(200);
catch (InterruptedException e) { }
if ( (gtp != null) && ((i = gtp.available()) > 0) ) {
in = gtp.receive();
/* remove non-printing bytes */
for (i = 0; i < in.length; i++) {
if (in[i] < 0x20)
in[i] = 0x20;
output_box.append((new String(in)));
public void textValueChanged(TextEvent e) {
int len, i;
String str = new String("");
String message = input_box.getText();
len = message.length() - oldmessage.length();
if (len < 0) {
for (i = 0; i < -len; i++)
str += "\b";
//System.out.println("Backspace");
else if (len > 0) {
str = message.substring(oldmessage.length());
//System.out.println("len = "+str.length()+" str =
"+str);
oldmessage = message;
if ( (len != 0) && (gtp != null) )
gtp.send(str);
Next, create the actual applet that uses the tcpip and Text_io classes. Copy
the following code into a file called �Test.java�.
import java.awt.*;
import java.awt.event.*;
import java.applet.Applet;
import java.net.*;
import java.io.*;
import java.lang.*;
import java.text.*;
import java.util.*;
public class Test extends Applet {
static private boolean isapplet = true;
static private InetAddress arg_ip = null;
static private int arg_port = 0;
public tcpip gtp = null;;
InetAddress reader_ip = null;
int port = 10001;
public void init()
gtp = null;
reader_ip = null;
port = 10001;
public void start()
String st = new String("TCP/IP connection status: ");
setFont(new Font("Dialog",Font.BOLD,16));
setLayout(new GridBagLayout());
GridBagConstraints c = new GridBagConstraints();
c.gridx = 0; c.gridy = 0; c.gridwidth = 1; c.gridheight
= 1;
c.anchor = GridBagConstraints.CENTER;
c.fill = GridBagConstraints.BOTH;
c.insets = new Insets(5,5,5,5);
setBackground(Color.yellow);
setSize(600,500);
/* Either get the IP address from the HTTP server if
we're an applet, or from the commandline (if passed).
if (isapplet) {
try{
reader_ip = InetAddress.getByName(getCodeBase().getHost());
catch (UnknownHostException e){}
else {
reader_ip = arg_ip;
if (arg_port != 0) {
port = arg_port;
/* Open a socket to the Device Server's serial port
if (reader_ip != null) {
if (gtp == null) {
gtp = new tcpip(reader_ip, port);
if (gtp.s == null) {
st += "Connection FAILED! ";
gtp = null;
if (gtp == null) {
st += "Not Connected";
add((new Label(st)), c);
return;
st += "Connected";
add((new Label(st)), c);
/* You may now perform IO with the Device Server via
* gtp.send(byte[] data_out);
* byte[] data_in = gtp.receive();
* functions.
* In our example we'll use two TextBoxes which have
* been extended to handle IO to the Device Server.
*Data typed in the upper text box will be sent to
* the Device Server, and data received will be
*displayed in the lower text box.
/* Start of custom application code */
/* ADD YOUR CODE HERE */
c.gridx = 0; c.gridy = 2; c.gridwidth = 3; c.gridheight =
1;
c.anchor = GridBagConstraints.WEST;
add((new Text_io(gtp)), c);
/* End of custom application code */
public void destroy()
if (gtp != null)
gtp.disconnect();
gtp = null;
public void stop() {
public static void main(String[] args) {
Frame frame = new Frame("TCP/IP Test");
frame.addWindowListener(new WindowAdapter() {
public void windowClosing(WindowEvent e) {
System.exit(0);
if (args.length > 0) {
try{
arg_ip = InetAddress.getByName(args[0]);
catch (UnknownHostException e){}
if (args.length > 1) {
try {
arg_port = Integer.valueOf(args[1]).intValue();
catch (NumberFormatException e) {}
Test ap = new Test();
frame.add(ap);
ap.init();
isapplet = false;
ap.start();
frame.pack();
frame.show();Let's see a decent try by you towards a solution first. I've found that usually the more thought and effort posters put into creating and solving their questions, the better their chances are of a volunteer here taking the time and effort to consider it and give a helpful answer. In other words, show that you are putting effort into doing your own homework first.
Also, when posting your code, please use code tags so that your code will retain its formatting and be readable. To do this, you will need to paste already formatted code into the forum, highlight this code, and then press the "code" button at the top of the forum Message editor prior to posting the message. You may want to click on the Preview tab to make sure that your code is formatted correctly. Another way is to place the tag [code] at the top of your block of code and the tag [/code] at the bottom, like so:
[code]
// your code block goes here.
// note the differences between the tag at the top vs the bottom.
[/code]or
{code}
// your code block goes here.
// note here that the tags are the same.
{code}good luck -
CAn Someone Please Help me? Turn this program in a algorithm
DECLARE SUB RentCar ()
DECLARE SUB PayBill ()
DECLARE SUB Main ()
DECLARE SUB ReadCarData ()
DECLARE SUB FindCar ()
TYPE Car ' User made Type To hold Car Data
CarNumber AS INTEGER
License AS STRING * 8
Year AS INTEGER
CarMaker AS STRING * 16
CarName AS STRING * 16
Description AS STRING * 20
ColorOfCar AS STRING * 10
NumberOfDoors AS INTEGER
Price AS DOUBLE
Rented AS INTEGER
Customer AS INTEGER
END TYPE
TYPE Customer ' User made Type to hold Customer data
CustomerNumber AS INTEGER
CustName AS STRING * 50
Bill AS DOUBLE
END TYPE
DIM SHARED Cars(1 TO 26) AS Car ' Global Variables
DIM SHARED p(4) AS Customer
DIM CustName AS STRING * 50
p(0).CustName = "Kevin" ' Assign Customers who need to pay bills
p(0).Bill = 0
p(1).CustName = "Eljah"
p(1).Bill = 100
p(2).CustName = "Jared"
p(2).Bill = 55
p(3).CustName = "Claudwin"
p(3).Bill = 60
p(4).CustName = "Isaac"
p(4).Bill = 1500
CALL ReadCarData ' This reads the data statements into the Cars() array.
WIDTH 80, 50 ' Formats screen and call the main part of the program
CALL Main
' CAR DATA STATEMENTS
' LICENSE YEAR MAKER MODEL DESCRIPTION COLOR DOORS PRICE
DATA "X-5687", 2007, "DODGE", "CALIBER", "FAMILY CAR", "DARK RED", 4, 89.99
DATA "X-9681", 2006, "DODGE", "CHARGER", "SPORT", "GREY", 4, 47.99
DATA "X-9684", 2006, "DODGE", "RAM 2500", "PICKUP", "BLACK", 4, 101.99
DATA "X-9437", 2004, "FORD", "MUSTANG", "SPORT", "RED", 2, 45.99
DATA "X-2562", 2002, "FORD", "TAURUS", "SEDAN", "LIGHT GREY", 4, 67.99
DATA "X-3856", 2003, "FORD", "CONTOUR", "SMALL", "LIGHT BLUE", 2, 45.99
DATA "X-2724", 2001, "FORD", "BRONCO", "JEEP", "BLACK", 4, 63.99
DATA "X-2724", 2001, "FORD", "BRONCO", "JEEP", "DARK GREEN", 4, 63.99
DATA "X-8568", 1998, "FORD", "ESCORT", "COMPACT", "BROWN", 2, 35.99
DATA "X-4724", 2004, "FORD", "PROBE", "SPORT", "BLACK", 2, 58.99
DATA "X-4724", 2004, "FORD", "PROBE", "SPORT", "RED", 2, 58.99
DATA "X-4724", 2004, "FORD", "PROBE", "SPORT", "YELLOW", 2, 58.99
DATA "X-4724", 2003, "FORD", "AEROSTAR", "S.U.V.", "DARK GREEN", 4, 87.99
DATA "X-2727", 1999, "PONTIAC", "GRAND AM", "SPORT CAR", "BLACK", 2, 45.99
DATA "X-2327", 1999, "PONTIAC", "GRAND AM", "SPORT CAR", "RED", 2, 45.99
DATA "X-2767", 1999, "PONTIAC", "GRAND AM", "SPORT CAR", "GREY", 2, 45.99
DATA "X-2723", 1999, "PONTIAC", "GRAND AM", "SPORT CAR", "PURPLE", 2, 45.99
DATA "X-8486", 2005, "PONTIAC", "TRANSPORT", "S.U.V.", "WHITE", 2, 96.99
DATA "X-3261", 2005, "PONTIAC", "AZTEC", "S.U.V.", "YELLOW", 4, 93.99
DATA "X-1864", 2006, "PONTIAC", "TORRENT", "S.U.V.", "RED", 4, 98.99
DATA "X-8521", 2006, "MERCURY", "COUGAR", "SPORT", "BLACK", 2, 69.99
DATA "X-8471", 2006, "LINCOLN", "TOWN CAR", "LUXURY", "BLACK", 4, 149.99
DATA "X-8635", 2001, "LINCOLN", "CONTINENTAL", "LUXURY", "GOLD", 4, 139.99
DATA "X-2643", 2006, "CHEVROLET", "F-150", "PICKUP", "GREY", 2, 95.99
DATA "X-7143", 2006, "CHEVROLET", "CORVETTE", "SPORT", "YELLOW", 2, 131.99
DATA "X-7378", 2006, "CHEVROLET", "MALIBU", "SEDAN", "BLACK", 4, 81.99
SUB FindCar ' This sub goes through the data to search for a car
DIM Counter AS INTEGER 'variables need for sub
DIM TempMaker AS STRING
DIM TempModel AS STRING
DIM TempColor AS STRING
DIM TempCarType AS STRING
DIM TempRangeFrom AS DOUBLE
DIM TempRangeTo AS DOUBLE
DIM TempMax AS DOUBLE
DIM TempMin AS DOUBLE
DIM LeaveFindCar AS INTEGER
DIM MoreCar AS STRING
DIM CanDisplay AS INTEGER
DO WHILE LeaveFindCar = 0 ' Main loop to find type of car
' Initialize the variables
Counter = 0
TempMaker = ""
TempModel = ""
TempColor = ""
TempRangeFrom = 0
TempRangeTo = 0
CLS ' Draw the screen with the search fields"
COLOR 15
PRINT "FIND IDEAL CAR: (Enter one or more of these items)"
PRINT STRING$(80, CHR$(196))
COLOR 11
PRINT "Car Builder:"
PRINT "Car Model:"
PRINT "Car Color:"
PRINT "Price Range: From: To:"
COLOR 10 ' GetsUser can enter any search fields he wants
LOCATE 3, 19
INPUT TempMaker
LOCATE 4, 19
INPUT TempModel
LOCATE 5, 19
INPUT TempColor
LOCATE 6, 19
INPUT TempRangeFrom
LOCATE 6, 36
INPUT TempRangeTo
COLOR 15
PRINT STRING$(80, CHR$(196))
CanDisplay = 0
FOR Counter = 1 TO 26 '' This loop does the actual search of the matching cars
'We compare all string type variables as an
'uppercase (UCASE$) and Right Trimmed (RTRIM$)
'to avoid having to compare upper and lower case
'Values, this makes the condtions here twice
'as short to perform.
IF RTRIM$(TempMaker) <> "" THEN
IF UCASE$(RTRIM$(Cars(Counter).CarMaker)) = UCASE$(RTRIM$(TempMaker)) THEN
IF RTRIM$(TempModel) <> "" THEN
IF UCASE$(RTRIM$(Cars(Counter).CarName)) = UCASE$(RTRIM$(TempModel)) THEN
IF RTRIM$(TempColor) <> "" THEN
IF UCASE$(RTRIM$(Cars(Counter).ColorOfCar)) = UCASE$(RTRIM$(TempColor)) THEN
IF TempRangeFrom > 0 AND TempRangeTo > 0 THEN
IF TempRangeFrom > TempRangeTo THEN
TempMin = TempRangeTo
TempMax = TempRangeFrom
ELSE
TempMin = TempRangeFrom
TempMax = TempRangeTo
END IF
' If Price of car is in between Mininum and Maximum Price
'Allows to display the record.
IF Cars(Counter).Price >= TempMin AND Cars(Counter).Price <= TempMax THEN
CanDisplay = 1
ELSE
CanDisplay = 0
END IF
END IF
ELSE
CanDisplay = 0
END IF
ELSE
' The IF is to set Min to the smallest of
' the range vales and TempMax to the biggest.
IF TempRangeFrom > 0 AND TempRangeTo > 0 THEN
IF TempRangeFrom > TempRangeTo THEN
TempMin = TempRangeTo
TempMax = TempRangeFrom
ELSE
TempMin = TempRangeFrom
TempMax = TempRangeTo
END IF
IF Cars(Counter).Price >= TempMin AND Cars(Counter).Price <= TempMax THEN
CanDisplay = 1
ELSE
CanDisplay = 0
END IF
END IF
END IF
ELSE
CanDisplay = 0
END IF
ELSE
IF RTRIM$(TempColor) <> "" THEN
IF UCASE$(RTRIM$(Cars(Counter).ColorOfCar)) = UCASE$(RTRIM$(TempColor)) THEN
' This IF is to set Min to the smallest of
' the range values and Max to the biggest.
IF TempRangeFrom > 0 AND TempRangeTo > 0 THEN
IF TempRangeFrom > TempRangeTo THEN
TempMin = TempRangeTo
TempMax = TempRangeFrom
ELSE
TempMin = TempRangeFrom
TempMax = TempRangeTo
END IF
IF Cars(Counter).Price >= TempMin AND Cars(Counter).Price <= TempMax THEN
CanDisplay = 1
ELSE
CanDisplay = 0
END IF
END IF
ELSE
CanDisplay = 0
END IF
ELSE
' The IF is to set Min to the smallest of
' the range vales and Max to the biggest.
IF TempRangeFrom > 0 AND TempRangeTo > 0 THEN
IF TempRangeFrom > TempRangeTo THEN
TempMin = TempRangeTo
TempMax = TempRangeFrom
ELSE
TempMin = TempRangeFrom
TempMax = TempRangeTo
END IF
IF Cars(Counter).Price >= TempMin AND Cars(Counter).Price <= TempMax THEN
CanDisplay = 1
ELSE
CanDisplay = 0
END IF
ELSEIF TempRangeFrom = 0 AND TempRangeTo > 0 THEN ' The IF one of the range to be 0
TempMin = TempRangeFrom
TempMax = TempRangeTo
IF Cars(Counter).Price >= TempMin AND Cars(Counter).Price <= TempMax THEN
CanDisplay = 1
ELSE
CanDisplay = 0
END IF
ELSEIF TempRangeFrom > 0 AND TempRangeTo = 0 THEN ' This IF one of the range to be 0
TempMin = TempRangeTo
TempMax = TempRangeFrom
IF Cars(Counter).Price >= TempMin AND Cars(Counter).Price <= TempMax THEN
CanDisplay = 1
ELSE
CanDisplay = 0
END IF
ELSE
CanDisplay = 1
END IF
END IF
END IF
END IF
ELSE
'Same as previously, all string variables are UCASEd and
'RTRIMmed to shorten the comparison lenghts.
IF RTRIM$(TempModel) <> "" THEN
IF UCASE$(RTRIM$(Cars(Counter).CarName)) = UCASE$(RTRIM$(TempModel)) THEN
IF RTRIM$(TempColor) <> "" THEN
IF UCASE$(RTRIM$(Cars(Counter).ColorOfCar)) = UCASE$(RTRIM$(TempColor)) THEN
IF TempRangeFrom > 0 AND TempRangeTo > 0 THEN
IF TempRangeFrom > TempRangeTo THEN
' This IF is to setMin to the smallest of
' the range vales and Max to the biggest
TempMin = TempRangeTo
TempMax = TempRangeFrom
ELSE
TempMin = TempRangeFrom
TempMax = TempRangeTo
END IF
IF Cars(Counter).Price >= TempMin AND Cars(Counter).Price <= TempMax THEN
CanDisplay = 1
ELSE
CanDisplay = 0
END IF
END IF
ELSE
CanDisplay = 0
END IF
ELSE
' This IF is to setMin to the smallest of
' the range vales and Max to the biggest
IF TempRangeFrom > 0 AND TempRangeTo > 0 THEN
IF TempRangeFrom > TempRangeTo THEN
TempMin = TempRangeTo
TempMax = TempRangeFrom
ELSE
TempMin = TempRangeFrom
TempMax = TempRangeTo
END IF
IF Cars(Counter).Price >= TempMin AND Cars(Counter).Price <= TempMax THEN
CanDisplay = 1
ELSE
CanDisplay = 0
END IF
END IF
END IF
ELSE
CanDisplay = 0
END IF
ELSE
IF RTRIM$(TempColor) <> "" THEN
IF UCASE$(RTRIM$(Cars(Counter).ColorOfCar)) = UCASE$(RTRIM$(TempColor)) THEN
' This IF is to setMin to the smallest of
' the range vales and Max to the biggest
IF TempRangeFrom > 0 AND TempRangeTo > 0 THEN
IF TempRangeFrom > TempRangeTo THEN
TempMin = TempRangeTo
TempMax = TempRangeFrom
ELSE
TempMin = TempRangeFrom
TempMax = TempRangeTo
END IF
IF Cars(Counter).Price >= TempMin AND Cars(Counter).Price <= TempMax THEN
CanDisplay = 1
ELSE
CanDisplay = 0
END IF
ELSE
CanDisplay = 1
END IF
ELSE
CanDisplay = 0
END IF
ELSE
' This IF is to setMin to the smallest of
' the range vales and Max to the biggest
IF TempRangeFrom > 0 AND TempRangeTo > 0 THEN
IF TempRangeFrom > TempRangeTo THEN
TempMin = TempRangeTo
TempMax = TempRangeFrom
ELSE
TempMin = TempRangeFrom
TempMax = TempRangeTo
END IF
IF Cars(Counter).Price >= TempMin AND Cars(Counter).Price <= TempMax THEN
CanDisplay = 1
ELSE
CanDisplay = 0
END IF
ELSEIF TempRangeFrom = 0 AND TempRangeTo > 0 THEN
TempMin = TempRangeFrom
TempMax = TempRangeTo
IF Cars(Counter).Price >= TempMin AND Cars(Counter).Price <= TempMax THEN
CanDisplay = 1
ELSE
CanDisplay = 0
END IF
ELSEIF TempRangeFrom > 0 AND TempRangeTo = 0 THEN
TempMin = TempRangeTo
TempMax = TempRangeFrom
IF Cars(Counter).Price >= TempMin AND Cars(Counter).Price <= TempMax THEN
CanDisplay = 1
ELSE
CanDisplay = 0
END IF
ELSE
CanDisplay = 1
END IF
END IF
END IF
END IF
IF CanDisplay = 1 THEN ' If car match fields entered it is displayed
COLOR 11
PRINT Cars(Counter).CarNumber;
PRINT " " + RTRIM$(Cars(Counter).License);
PRINT " - " + RTRIM$(Cars(Counter).CarMaker);
PRINT " " + RTRIM$(Cars(Counter).CarName);
PRINT " " + RTRIM$(Cars(Counter).Description);
PRINT " " + RTRIM$(Cars(Counter).ColorOfCar);
PRINT TAB(60); USING " $###.##"; Cars(Counter).Price
CanDisplay = 0
END IF
NEXT Counter ' displays line after listing cars
COLOR 15
PRINT STRING$(80, CHR$(196))
DO WHILE UCASE$(MoreCar) <> "Y" AND UCASE$(MoreCar) <> "N"
LOCATE CSRLIN, 1 ' This loop ask useers if they want another car search
PRINT "Find Another Car (Y/N)"
INPUT MoreCar
LOOP
IF UCASE$(MoreCar) = "N" THEN ' If user entered "n" the loop is exited
LeaveFindCar = 1
END IF
MoreCar = ""
LOOP
END SUB
SUB Main
' This SUB is the main part of the program. It displays
' the menu and accepts the choices from the user, when the
' user picks a valid value, it executes the proper choice
DO
CLS
COLOR 15
'print the menu on the screen
LOCATE 1, 33
PRINT "RENT CARS PLUS"
LOCATE 2, 1
PRINT STRING$(80, CHR$(196))
COLOR 11
PRINT " 1 - Pay Bill"
PRINT " 2 - Rent Car"
PRINT " 3 - Find Ideal Car"
PRINT " 999 - Exit"
COLOR 15
PRINT STRING$(80, CHR$(196))
INPUT "Choice: ", Choice ' The user enters his/her choice
IF Choice = 999 THEN END
IF Choice <> 999 AND Choice <> 1 AND Choice <> 2 AND Choice <> 3 THEN
PRINT " Error Please Enter Correct Choice! " ' If not valid answer user is asked to enter correct choice
END IF
SELECT CASE Choice ' This Select Case executes the subprograms options
CASE 1
CALL PayBill
CASE 2
CALL RentCar
CASE 3
CALL FindCar
CASE 5
END SELECT
LOOP UNTIL Choice = 999
END SUB
SUB PayBill' This sub does the bill paying process.
' it asks a few question to the user to get the right
' information and be able to pay the given bill.
DIM CustName AS STRING
DIM MoreBill AS INTEGER
DIM Answer AS STRING
DIM Flag AS INTEGER
COLOR 15
MoreBill = 0 ' To start loop variable
DO WHILE MoreBill = 0 ' Loop to start the Bill Paying Process
StartBill:
' Displays screen to user
CLS
COLOR 15
PRINT "PAY A BILL"
PRINT STRING$(80, CHR$(196))
INPUT "Customer Name: ", CustName ' user enters customer name
Flag = 0
FOR Q = 0 TO 4 ' Loops to search for customer name in array
IF UCASE$(RTRIM$(p(Q).CustName)) = UCASE$(RTRIM$(CustName)) THEN
Flag = 1
PRINT p(Q).CustName; p(Q).Bill
EXIT FOR
END IF
NEXT Q
'' If customer name invalid error message displayed
IF Flag = 0 THEN
PRINT "Invalid name. Press a key to try again."
DO WHILE INKEY$ <> "": LOOP
GOTO StartBill
END IF
MethodInput:
DO
LOCATE 4, 1 ' Display Payment methods and wait for user to pick one
COLOR 11
PRINT "We only use Visa or American Express. How do you wish to pay?"
PRINT "1 - Visa"
PRINT "2 - American Express"
PRINT "3 - Check"
PRINT "4 - Cash"
INPUT "Select 1, 2, 3, or 4: ", howtopay$ ' User enters way to pay
IF howtopay$ = "1" OR howtopay$ = "2" THEN ' CArd number asked for If american or visa
INPUT "Enter account number: ", cardnum$
ELSEIF howtopay$ <> "3" AND howtopay$ <> "4" THEN
PRINT "You must select method of payment."
END IF
LOOP WHILE howtopay$ < "1" OR howtopay$ > "4"
PaymentInput:
'' users enters payment amount
INPUT "Payment Amount (0 to cancel the transaction): ", PayAmount
IF PayAmount <> 0 THEN
IF PayAmount > p(Q).Bill THEN
'' If payment bigger than amount owed message displayed
PRINT "Payment is bigger than amount due. Press key to enter payment."
DO WHILE INKEY$ = "": LOOP
GOTO PaymentInput
ELSE
' If amount valid , payment subtracted from amount owed
p(Q).Bill = p(Q).Bill - PayAmount
PRINT "New balance is "; USING "$#####.##"; p(Q).Bill
END IF
END IF
'' Loop ask if user wishes to pay another bill
DO WHILE UCASE$(RTRIM$(Answer)) <> "Y" AND UCASE$(RTRIM$(Answer)) <> "N"
COLOR 15
LOCATE 48, 1
PRINT "Pay Another Bill (Y/N) ";
INPUT Answer
LOOP
IF UCASE$(RTRIM$(Answer)) = "N" THEN ' If answer is "N" then loop exited
MoreBill = 1
END IF
LOOP
END SUB
SUB ReadCarData
' This sub reads all data from the DATA statements
' And puts them in the Cars array
DIM Counter AS INTEGER
FOR Counter = 1 TO 26
Cars(Counter).CarNumber = Counter
READ Cars(Counter).License
READ Cars(Counter).Year
READ Cars(Counter).CarMaker
READ Cars(Counter).CarName
READ Cars(Counter).Description
READ Cars(Counter).ColorOfCar
READ Cars(Counter).NumberOfDoors
READ Cars(Counter).Price
NEXT Counter
END SUB
SUB RentCar
' This sub does the renting of a car
' to a customer. This ask several questions
' in order to get the right customer and the right
' car to rent then it rents it.
DIM MoreRent AS INTEGER
DIM TempCustomer AS INTEGER
DIM TempBill AS DOUBLE
DIM Answer AS STRING
DIM TempPrice AS DOUBLE
DIM TempInsurance AS DOUBLE
DIM CustName AS STRING
DIM Number AS STRING
DIM CarNumber AS INTEGER
DIM Days AS INTEGER
DIM Q AS INTEGER
MoreRent = 0 ' Loop for rental process
DO WHILE MoreRent = 0
InputName:
CLS ' Display screen to user
COLOR 15
PRINT "RENT A CAR"
PRINT STRING$(80, CHR$(196))
COLOR 11
LOCATE 3, 1
INPUT " Full Name: ", CustName ' user enters his name
IF RTRIM$(CustName) = "" THEN
PRINT "You Must Enter Your Name. Press a key to retry." ' User is told he must enter a name
DO WHILE INKEY$ = "": LOOP
GOTO InputName
ELSE
FOR Q = 0 TO 4
IF UCASE$(RTRIM$(p(Q).CustName)) = UCASE$(RTRIM$(CustName)) THEN
Flag = 1
PRINT p(Q).CustName; p(Q).Bill
TempCustomer = Q
EXIT FOR
END IF
NEXT Q
END IF
InputNumber:
LOCATE 5, 1
INPUT " Phone Number: ", Number ' User enters phone number
IF RTRIM$(Number) = "" THEN
PRINT "You Must a phone number. Press a key to retry." ' User is warned he must enter a number
DO WHILE INKEY$ = "": LOOP
GOTO InputNumber
END IF
CarInput:
LOCATE 7, 2
COLOR 11
INPUT "Car Number: ", CarNumber
' This awaits a car number from the user.
IF CarNumber < 1 AND CarNumber > 26 THEN ' If the car number is out of range, we warn and start again
PRINT "Car Number must be between 1 and 26. Press a key to retry."
DO WHILE INKEY$ = "": LOOP
GOTO CarInput
ELSE
' No need to search, we just display the car information
COLOR 14
PRINT RTRIM$(Cars(CarNumber).License) + " - ";
PRINT Cars(CarNumber).Year;
PRINT RTRIM$(Cars(CarNumber).CarMaker) + " " + RTRIM$(Cars(CarNumber).CarName) + " ";
PRINT RTRIM$(Cars(CarNumber).ColorOfCar)
PRINT "PRICE: "; USING "$####.##"; Cars(CarNumber).Price
END IF
DaysInput:
LOCATE 10, 1
COLOR 11
INPUT " Number of Days to rent: ", Days
' This awaits for a number of days to rent the car for.
IF Days < 1 AND Days > 31 THEN
PRINT "Days are 1 to 31. Press a key to retry."
' Can't have less than 1 day or more than a month or we warn.
DO WHILE INKEY$ = "": LOOP
GOTO DaysInput
END IF
TempPrice = Days * Cars(CarNumber).Price
' Calculate the Price of the rental
InsuranceInput:
LOCATE 13, 1
COLOR 11
DO WHILE UCASE$(RTRIM$(Answer)) <> "Y" AND UCASE$(RTRIM$(Answer)) <> "N"
COLOR 11
LOCATE 13, 1
PRINT "Add Insurance (Y/N)";
' the customer has the option to purchase insurance here.
INPUT Answer
LOOP
IF UCASE$(Answer) = "Y" THEN
COLOR 11
DO WHILE UCASE$(RTRIM$(Answer)) <> "F" AND UCASE$(RTRIM$(Answer)) <> "D"
'we loop until the users enters y or n
COLOR 11
LOCATE 14, 1
PRINT "(F)ixed Or (D)aily Amount";
' If the user selected yes, we ask for fixed or daily insurance amount.
INPUT Answer
LOOP
' if Fixed amount was picked we ask for that amount
IF UCASE$(RTRIM$(Answer)) = "F" THEN
INPUT "Fixed Insurance: ", TempInsurance
ELSE
TempInsurance = 15 * Days ' If Daily was picked we multiply 15 by the number of days rented
END IF
END IF
DO ' this loop asks for a payment method.
LOCATE 17, 1
PRINT "We only use Visa or American Express. How do you wish to pay?"
PRINT "1 - Visa"
PRINT "2 - American Express"
PRINT "3 - Check"
PRINT "4 - Cash"
INPUT "Select 1, 2, 3, or 4: ", howtopay$
IF howtopay$ = "1" OR howtopay$ = "2" THEN
INPUT "Enter account number: ", cardnum$
ELSEIF howtopay$ <> "3" AND howtopay$ <> "4" THEN
PRINT "You must select method of payment."
END IF
LOOP WHILE howtopay$ < "1" OR howtopay$ > "4"
COLOR 14
PRINT
' This part displays some totals to the user.
PRINT "Rental Price = "; USING "$##,###.##"; TempPrice
PRINT "Insurance Amount = "; USING "$##,###.##"; TempInsurance
PRINT "Total Price = "; USING "$##,###.##"; TempPrice + TempInsurance
PRINT " ----------"
TempBill = p(TempCustomer).Bill
TempBill = TempBill + (TempPrice + TempInsurance)
p(TempCustomer).Bill = TempBill
PRINT "New Balance = "; USING "$##,###.##"; TempBill
PRINT " =========="
Answer = ""
' This loop asks if the user wants to rent another car.
DO WHILE UCASE$(RTRIM$(Answer)) <> "Y" AND UCASE$(RTRIM$(Answer)) <> "N"
COLOR 15
LOCATE 48, 1
PRINT "Rent Another Car (Y/N) ";
INPUT Answer
LOOP
IF UCASE$(RTRIM$(Answer)) = "N" THEN
' If user selected N, we assign value to exit the loop
MoreRent = 1
END IF
LOOP
END SUB
Im really good at programming but really suck at algorithms can someone please please write in a algorithm form for me , i need it by friday i would greatly be thankful for uIm really good at programming but really suck at algorithms
>If your are 'really good' at programming, you will be able to solve this problem. Because, it has nothing to do with algorithm.
>>can someone please please write in a algorithm form for me , i need it by friday i would greatly be thankful for u
>Wrong person, in the wrong place. -
Please Give me reply for this problem(How can I get the result)???
Hello Friends,
I have one table CXATCMS.Which has 3 columns and has the following data
start_no end_no activity_date
05001000001 05001000002 01-OCT-03
05001000015 05001000016 01-OCT-03
05001000017 05001000018 12-JUN-05
05001000019 05001000020 12-JUL-06
I have to create a report which lists the the specific range.
If the next record's start_no is the immediate next number for the prevoius record's
end_no .....then it has to display all those numbers in a range until it finds a number which is not next immediate number for the previous record's end number.
like for example....if the user wants to see from 1 to 20 range.
then the result must be like this........
start_no end_no
05001000001 05001000002-------there is no 05001000003 number in the
05001000015 05001000020 start numbers so it has to stop its range by this number).
How can i get this result........Hi,
Try this. I am sure you know how to write procedure, I have skipped those obligations, anyway u can sense the absic way of working from here I think. Pls do the uppercase / lowercase adjustment as required by your operating system.
Declare
mnd CXATCMS.end_no%type;
numRec CXATCMS.%rowtype;
Cursor C is select * from CXATCMS where start_no between 1 and 20 order by start_no;
begin
select min(end_no)+1 into mnd from CXATCMS where start_no between 1 and 20;
open C;
Loop
fetch C into numRec;
DBMS_OUTPUT.putline(numRec);
exit when mnd<>numrec.start_no;
if mnd=numrec.start_no then
mnd:=numRec.end_no + 1;
end if;
end loop;
Exception
when no_data_found raise application_error;
end;
gimme feadback pl,
Pragati. -
New to Java and need help with this program..please!
I'd really appreciate any helpful comments about this program assignment that I have to turn in a week from Friday. I'm taking a class one night a week and completely new to Java. I'd ask my professor for help, but we can't call him during the week and he never answers e-mails. He didn't tell us how to call from other classes yet, and I just can't get the darn thing to do what I want it to do!
The assignment requirements are:
1. Change a card game application that draws two cards
and the higher card wins, to a Blackjack application
2. Include a new class called Hand
3. The Hand class should record the number of draws
4. The application should prompt for a number of draws
5. The game is played against the Dealer
6. The dealer always draws a card if the dealer's hand total is <= 17
7. Prompt the player after each hand if he wants to quit
8. Display the total games won by the dealer and total and the total games wond by the player after each hand
9. Display all of the dealer's and player's cards at the
end of each hand
10. Player has the option of drawing an additional card after the first two cards
11. The Ace can have a value of 11 or 1
(Even though it's not called for in the requirements, I would like to be able to let the Ace have a value of 1 or an 11)
The following is my code with some comments about a few things that are driving me nuts:
import java.util.*;
import javax.swing.*;
import java.text.*;
public class CardDeck
public CardDeck()
deck = new Card[52];
fill();
shuffle();
public void fill()
int i;
int j;
for (i = 1; i <= 13; i++)
for (j = 1; j <= 4; j++)
deck[4 * (i - 1) + j - 1] = new Card(i, j);
cards = 52;
public void shuffle()
int next;
for (next = 0; next < cards - 1; next++)
int rand = (int)(Math.random()*(next+1));
Card temp = deck[next];
deck[next] = deck[rand];
deck[rand] = temp;
public final Card draw()
if (cards == 0)
return null;
cards--;
return deck[cards];
public int changeValue()
int val = 0;
boolean ace = false;
int cds;
for (int i = 0; i < cards; i++)
if (cardValue > 10)
cardValue = 10;
if (cardValue ==1) {
ace = true;
val = val + cardValue;
if ( ace = true && val + 10 <= 21 )
val = val + 10;
return val;
public static void main(String[] args)
CardDeck d = new CardDeck();
int x = 3;
int i;
int wins = 1;
int playerTotal = 1;
do {
Card dealer = (d.draw());
/**I've tried everything I can think of to call the ChangeValue() method after I draw the card, but nothing is working for me.**/
System.out.println("Dealer draws: " + dealer);
do {
dealer = (d.draw());
System.out.println(" " + dealer);
}while (dealer.rank() <= 17);
Card mine = d.draw();
System.out.println("\t\t\t\t Player draws: "
+ mine);
mine = d.draw();
System.out.println("\t\t\t\t\t\t" + mine);
do{
String input = JOptionPane.showInputDialog
("Would you like a card? ");
if(input.equalsIgnoreCase("yes"))
mine = d.draw();
System.out.println("\t\t\t\t\t\t" + mine);
playerTotal++;
else if(input.equalsIgnoreCase("no"))
System.out.println("\t\t\t\t Player stands");
else
System.out.println("\t\tInvalid input.
Please try again.");
I don't know how to go about making and calling a method or class that will combine the total cards delt to the player and the total cards delt to the dealer. The rank() method only seems to give me the last cards drawn to compare with when I try to do the tests.**/
if ((dealer.rank() > mine.rank())
&& (dealer.rank() <= 21)
|| (mine.rank() > 21)
&& (dealer.rank() < 22)
|| ((dealer.rank() == 21)
&& (mine.rank() == 21))
|| ((mine.rank() > 21)
&& (dealer.rank() <= 21)))
System.out.println("Dealer wins");
wins++;
else
System.out.println("I win!");
break;
} while (playerTotal <= 1);
String stop = JOptionPane.showInputDialog
("Would you like to play again? ");
if (stop.equalsIgnoreCase("no"))
break;
if (rounds == 5)
System.out.println("Player wins " +
(CardDeck.rounds - wins) + "rounds");
} while (rounds <= 5);
private Card[] deck;
private int cards;
public static int rounds = 1;
public int cardValue;
/**When I try to compile this nested class, I get an error message saying I need a brace here and at the end of the program. I don't know if any of this code would work because I've tried adding braces and still can't compile it.**/
class Hand()
static int r = 1;
public Hand() { CardDeck.rounds = r; }
public int getRounds() { return r++; }
final class Card
public static final int ACE = 1;
public static final int JACK = 11;
public static final int QUEEN = 12;
public static final int KING = 13;
public static final int CLUBS = 1;
public static final int DIAMONDS = 2;
public static final int HEARTS = 3;
public static final int SPADES = 4;
public Card(int v, int s)
value = v;
suit = s;
public int getValue() { return value; }
public int getSuit() { return suit; }
public int rank()
if (value == 1)
return 4 * 13 + suit;
else
return 4 * (value - 1) + suit;
/**This works, but I'm confused. How is this method called? Does it call itself?**/
public String toString()
String v;
String s;
if (value == ACE)
v = "Ace";
else if (value == JACK)
v = "Jack";
else if (value == QUEEN)
v = "Queen";
else if (value == KING)
v = "King";
else
v = String.valueOf(value);
if (suit == DIAMONDS)
s = "Diamonds";
else if (suit == HEARTS)
s = "Hearts";
else if (suit == SPADES)
s = "Spades";
else
s = "Clubs";
return v + " of " + s;
private int value; //Value is an integer, so how can a
private int suit; //string be assigned to an integer?
}Thank you so much for offering to help me with this Jamie! When I tried to call change value using:
Card dealer = (d.changeValue());
I get an error message saying:
Incompatible types found: int
required: Card
I had my weekly class last night and the professor cleared up a few things for me, but I've not had time to make all of the necessary changes. I did find out how toString worked, so that's one question out of the way, and he gave us a lot of information for adding another class to generate random numbers.
Again, thank you so much. I really want to learn this but I'm feeling so stupid right now. Any help you can give me about the above error message would be appreciated. -
ADF Rollback - Please give me solution
Hi,
Please give me a solution. Here is the scenario.
- I use ADF + Struts + JSP
- If I rollback the transaction on an edit page due to some constraint error ( eg: unique constraint), view object points to the first row automatically. User still see the old values on the screen. If the user tries to re-enter the values, it updates the first record. Please give me some alternative solution ?
- If i donot rollback the transaction, then it saves correctly, but the user gets the same error when he performs any operation on any other page. We can not expect the user to press the cancel button each time.
Please provide some alternative solution for this.Hi Frank,
Thanks for your reply.
Now the problem of the first row is resolved by setting the row key in session.
I followed the same steps as you told. But there is still some problem exists.
1. After i get the constraint error, currently i save the row currency and rollback the transaction and set it again. User is able to save correctly without any problem.
2. But if the user decides not to save the record after the unique constraint violation error, even though i did the rollback, i get the same constraint error if i try to perform any operation on any other page. Please give me solution for this.
3. And also i see the same record on the list page even though i rollback in the edit page . Please give me solution for this.
This is happening only if the user is not saving. If pressed on cancel..every thing works fine. But ther user may not click the cancel.
Please reply me as soon as possible. I have so many web pages facing the same problem
Thanks.
Maybe you are looking for
-
Dreamweaver spry menubar vertical doesn't work properly in firefox 3.6.3 for windows
The links in the menu items in the left hand sidebar (a Spry menubar vertical) do NOT work properly in Firefox 3.6.3 for Windows. They work when the home page is first loaded, but when you go to another page using the menu links and return to the hom
-
HT201328 how to unlock my i phone so i can use it international
how to unlock my iphone so i can use it international on any simcard
-
Hi, Is it possible to save texts written in powerpoints with Xcelsius Text Area? When a user writes text in powerpoint and save it to Enterpise, can the text be seen by other users when they open the powerpoint? Br, Sonni
-
Application Language Popup appears unexpectedly - very annoying
Hi, When Acrobat is open in the background and I am working in another application in the foreground (especially in MS-Word) I often (every 5-10 minutes), and unexpectedly, get a popup titled "Adobe Acrobat" forcing me to choose a language or press E
-
Trapping errors when running in batch mode
I use windows scheduler to run several reports in batch mode. Is there a way to continue after an error and capture a error code. I ocasionally get Fetch out of sequence errors which have to be cleared from the screen manually. I need this to automat