I am reading a book on Java and we are at a point where it is explaining type conversion in expressions. One of the examples shared has a byte being multiplied by itself and then assigned back to itself ...
byte b;
b = 10;
b = (byte) (b * b);
this is all good and dandy (that is, the code functions properly).
However, I am confused why I need to typecast here! Without the cast, the compiler screams, "Type mismatch: cannot convert from int to byte." Yet I haven't converted to an int?? It appears there was an implicit conversion.
The final value, 100, is clearly within byte's range of -127 to +127 isn't it? So I am lost as to what is the issue here.
I've a small question relating to type promotion I can't find an answer for on the web. Basically in your code if you have :
byte b = 0; b = b + 1;
The compiler will complain about the result being an int which cannot be assigned to a byte. That I understand, as b on the right hand side of the expression is promoted to an int and the result of the addition is an int. However the following does compile :
byte b = 0; b++;
Does the post increment not carry out the post increment as "give me the value of b and then add 1 to b" where I would have expected 'add 1 to b' to do the same integer promotion as the previous example ? The compiler will also allow the following
If I don't append the L, is the msb (most significant bit) somehow still carried over to the resulting long variable and in the latter case, where I append an L, it is not and instead the value is filled up with 32 leading zeros (4 Byte difference between int and long)?
Prompt user to enter a social security number in the format DDD-DD-DDDD, where D is a digit. Displays "Valid SSN" for a correct ssn, and "Invalid SSN" otherwise.I have it working I am just looking for other ways to solve this with an array maybe or something simpler. I have used if statements here:
public static boolean checkSSN(String social) { boolean valid = false; // 9 digits and 2 hyphens. First three characters, 5 and 6, and 8, 9, // 10, 11 are digits
From this, I need to extract the statements of variables that do not start with _G . I mean, I need to extract, Y in 1..15 , __X in 1..15 /17/20 but not _G7145 in 10..15 / 16.
I am using regular Expression for this as [^_G]^[A-Za-z0-9_]+ in|ins [-9 -9]..[-9-9] [/[-9-9]..[-9-9]]+
I am given the task to create a program that evaluates infix expressions using two generic stacks, one operator stack and one value stack.
This is my GenStack.java file:
import java.util.*; public class GenStack<T>{//T is the type parameter private Node top;//top of stack public class Node {//defines each node of stack T value; Node next;
[Code] ....
I'm having trouble with the eval and apply methods. The eval method doesn't appear to pickup ')' characters, like it doesn't even see them.
Assuming that x, y, and z are integer variables, which of the following three logical expressions are equivalent to each other, that is, have equal values for all possible values of x, y, and z?
(x == y && x != z) || (x != y && x == z) (x == y || x == z) && (x != y || x != z) (x == y) != (x == z)
None of the three
A. I and II only B. II and III only C. I and III only D. I, II, and III
I selected B, but got it wrong. I really think I need understanding boolean logic. The correct answer says something else but I don't get the logic. Here is the correct answer:
Answer Key : The following model answer has been provided to you by the grader. Carefully compare your answer with the one provided here.
Expression III is the key to the answer: all three expressions state the fact that exactly one out of two equalities, x == y or x == z, is true. Expression I states that either the first and not the second or the second and not the first is true. Expression II states that one of the two is true and one of the two is false. Expression III simply states that they have different values. All three boil down to the same thing. The answer is E.
In exercise 4, I get the same problem:
The expression !((x <= y) && (y > 5)) is equivalent to which of the following?
A. (x <= y) && (y > 5) B. (x <= y) || (y > 5) C. (x >= y) || (y < 5) D. (x > y) || (y <= 5) E. (x > y) && (y <= 5)
Exercise 4 ABCDE Incorrect Score: 0 / 1 Submitted: 2/10/2014 8:21pm Your answer is incorrect. Answer Key
The following model answer has been provided to you by the grader. Carefully compare your answer with the one provided here. The given expression is pretty long, so if you try to plug in specific numbers you may lose a lot of time. Use De Morgan's Laws instead:
!((x <= y) && (y > 5)) !(x <= y) || !(y > 5)
When ! is distributed, && changes into ||, and vice-versa
But, I coudln't find any place in Java/JSP where the value for status is being set. What could be the possible place where the values for status is being set.
As the code is client specific, so, I couldn't paste the specific code over here but I have searched in whole workspace i couldn't find a single place where values for status is being set/assigned to.
I want to do a simple search and replace regular expression of lines. I am very unfamilar with Java regular expressions, and I'm not sure how to do something as simple as what I want to do. I have lines that look like this...
The reason I want to use regular expressions is because I want to use the replaceAll method of the java.lang.String object. If I use replace I have to convert my strings into char arrays, and my code becomes bulky.
Is there an advantage in using byte instead of int beyond the space savings? In my program, I'll never need close to the max value of a byte, let alone int, so it seems like a waste to make my primitives ints.
I need to send a byte array across a network. I know how to do this. (server->client)
byte[] myArray = new byte[]{0,1,2,3,4,5,6,7,8,9}; DataOutputStream.write(myArray);
... and I know how to receive it.
byte[] myArray = new byte[10]; DataInputStream.read(myArray);
When I send over one of these arrays, it ends up stopping storing values in the array when only about half the array is received, even though the array is sent from the server all at once. This results in the receiver's array, in this case, being something like {1,2,3,4,0,0,0,0,0,0}.
I can easily solve this - and already have - by simply adding a loop onto it and waiting for the bytes to all be received, as the method returns the amount of bytes actually read.
I am simply wondering if there is a better solution to this, as the current solution isn't that elegant. Did I do something wrong to cause only a part of the array to be sent first? Would it be better to use DataInputStream.readByte() to read off the bytes one by one rather than an array at once, and then store them in an array afterward? Would this cause a performance decrease as each byte is read individually? (I'm sending an array of several million bytes)
I am new to Android. I have byte array of size 10. I am passing the Decimal values (131 - 140) to byte array. But while printing I get Negative (-) values with decreasing order .
How can I get same value as positive values?
Or How can I store positive value e.g. 131 as byte array element.
Please not my requirement is array must be ByteArray only
I have a checksum function that is suppose to read IPV4 packet and return a short integer value. The IPV4 packets are stored in a byte array. I am having trouble storing the first 8 bits and second 8 bits of the short integer into the byte arrays especially when they have leading 1s. For example, if my checksum returns 5571 (binary = 0001 0101 1100 0011) The first 8 bits is suppose to represent 195 but when I try to assign a larger integer type to a btye the information gets sign extended. The 195 turns into -61. I tried using bit addition like array[10] = array[10] & 0xff, but the result remains the same.
public static short checksum(byte [] a, int length) { short sum = 0; long data; int i = 0; while(length > 1) { data = (((a[i] << 8) & 0xff00) | ((a[i + 1]) & 0xff)); sum += data;
I'm trying to create Web Services with Eclipse (Java Runtime 7 (also tried 8) Tomcat 7 (also tried 8).Web Service with parameter "byte[]" and return value "byte[]" works fine.Web Service with parameter "myOwnClass" and return value "myOwnClass" works also fine.But if I have a "byte[]" element in "myOwnClass" and I run my Client test program I get the following error:
AxisFault faultCode: {http://schemas.xmlsoap.org/soap/envelope/}Server.userException faultSubcode: faultString: java.lang.NumberFormatException: For input string: "MTExMTExMTExMQ=="
Why? I don't have any numeric element (such as int ...) in my class members!?
If you have final int i = 1; short s = 1; switch(s) { case i: System.out.println(i); }
it runs fine. Note that the switch expression is of type short (2 bytes) and the case constant is of type int (4 bytes).My question is: Is the type irrelevant as long as the value is within the boundaries of the type of the switch expression?I have the feeling that this is true since:
byte b = 127; final int i = 127; switch(b) { case i: System.out.println(i); }
This runs fine again, but if I change the literal assigned to i to 128, which is out of range for type byte, then the compiler complains.Is it true that in the first example the short variable and in the second example the byte variable (the switch expressions) are first implicitly converted to an int and then compared with the case constants?