Yes, but there are tradeoffs. Reducing the number of Serial.print() statements means printing more stuff in each call, which means that the stuff to print must be converted to strings and stored before printing.
Look at sprintf() if you want to go that route.
Keep in mind that sending the data as one string will not make the serial data get there any faster. So, the tradeoff is increased memory utilization all the time to reduce the number of lines of code that you type one time.
Without seeing all the code, I don't know if this is feasible, but you could store all the data in an array (rather than individual variables), and then use a "for" loop to read and print the data. Then you would only have to write the Serial.print() code once, and just step through the array.
PaulS is much better at this than I am, but I don't think the array technique would have the drawbacks he mentioned. You're already storing the data somewhere, this would just take numerous variables and put them into one array. It IS up to you to remember what data is stored where.
I.E.:
for(int row = 0 ; row < 3 ; row++)
{
Serial.println("");
Serial.print("Sensor ");
Serial.print(row+1); //This might not be the right syntax, but the idea is to print
//row+1, which is the sensor the reading is from
Serial.print("Humidity: ");
Serial.print(array[row][0]);
Serial.print(" %\t ");
Serial.print("Temperature: ");
Serial.print(array[row][1]);
Serial.println(" *C");
Serial.println("");
}
Essentially you are choosing between format as you go (separate serial.print and using stream library) and deciding the formatting and get everything formatted in one shot (sprintf). The only significance is that sprintf lets you precisely control the number of digits for numbers and spaces so the output looks better in situations like time and other stuff. You don't want 12:0:0 then use sprintf to get 12:00:00
I couldn't figure out how the sprintf works for the time to ad a 0, but i solved is with a if.
%d is the format specifier for an int. %2d says print the int using no less than 2 characters - the leading one can be a space. %02d says print the int using no less than 2 characters - the leading one will be a 0 if the value is less than 10.
Slightly off topiic BUT the UTFT lib does the float print w/leading zeros... myGLCD.printNumF(float,x,y,separator,numDig,fill char); or myGLCD.print(data,0,0,2,0)
Will print a float at 0 , 0 with 2 places after the decimal and a 0 as a fill char...